2012-08-29 86 views

回答

13

做這個

$x="Laura Smith"; 
$y="John. Smith" 
$z="John Doe"; 

,這取代了什麼之後的空格字符。也可用於破折號:

$str=substr($str, 0, strrpos($str, ' ')); 
+8

兩個潛在的問題是:當你使用'strrpos() ',* last * whitespace被搜索,你可能會得到像「Hello Nice」這樣的名字,例如「Hello Nice World」這樣的字符串。第二點是,當名稱中沒有空格時,它不會返回任何內容。雖然可能需要這種行爲,但也可能會導致煩惱。 – str

5

有沒有必要使用正則表達式,只需使用explode方法。

$item = explode(" ", $x); 
echo $item[0]; //Laura 
+1

我想你也可以去$ item = explode(「」,$ x)[0]; –

-1

$ x =「Laura Smith」; $ temparray = implode('',$ x); echo $ temparray [0];

對不起,有時候混淆了內爆和爆炸......

0

你也可以做這樣的

$str = preg_split ('/\s/',$x); 
print $str[0]; 
7

試試這個

<?php 
$x = "Laura Smith"; 
echo strtok($x, " "); // Laura 
?> 

strtok

0

TheBlackBenzKid提供的方法適用於這個問題 - howev呃當提供一個不含空格的參數時,它會返回一個空白字符串。

雖然正則表達式會更計算昂貴,他們提供了更多flexibiltiy,如:

function get_first_word($str) 
{ 
return (preg_match('/(\S)*/', $str, $matches) ? $matches[0] : $str); 
} 
15

只需將其添加到組合,我最近才知道這個技巧:

list($s) = explode(' ',$s); 

我只是做了一個快速的基準測試,因爲我之前沒有遇到過strtok的方法,而strtok比我的列表/爆炸解決方案快了25%,關於給出的示例字符串。

此外,初始字符串越長/越界,性能差距越大。給出一個5000字的塊,爆炸將產生5000個元素的數組。 strtok將只取第一個「元素」,並將其餘的內容作爲字符串保留。

所以strtok贏了我。

$s = strtok($s,' '); 
+0

這應該是被接受的答案。感謝您檢查性能。 – Marcel

0

這個答案將第一空間後刪除一切,不是最後如在接受answer.Using strpos情況和substr

$str = "CP hello jldjslf0"; 
$str = substr($str, 0, strpos($str, ' ')); 
echo $str; 
相關問題