我有一个有名字的数据库,我想在名字空格后使用PHP替换,数据示例:
$x="Laura Smith";
$y="John. Smith"
$z="John Doe";
我希望它返回
Laura
John.
John
答案 0 :(得分:20)
只是将它添加到组合中,我最近学会了这种技术:
list($s) = explode(' ',$s);
我只是做了一个快速的基准测试,因为我之前没有遇到strtok方法,并且strtok比我的list / explode解决方案快25%,在给出的示例字符串上。
此外,初始字符串越长/越分隔,性能差距就越大。给一个5000字的块,爆炸将产生5000个元素的数组。 strtok将只取第一个“元素”,并将其余部分留在内存中作为字符串。
所以strtok赢了。
$s = strtok($s,' ');
答案 1 :(得分:15)
这样做,这会替换空格字符后面的任何内容。也可用于破折号:
$str=substr($str, 0, strrpos($str, ' '));
答案 2 :(得分:8)
答案 3 :(得分:6)
无需使用正则表达式,只需使用explode方法即可。
$item = explode(" ", $x);
echo $item[0]; //Laura
答案 4 :(得分:1)
TheBlackBenzKid提供的方法对问题有效 - 但是当出现一个不包含空格的参数时,它将返回一个空白字符串。
虽然正则表达式的计算成本更高,但它们提供了更多的灵活性,例如:
function get_first_word($str)
{
return (preg_match('/(\S)*/', $str, $matches) ? $matches[0] : $str);
}
答案 5 :(得分:0)
你也可以这样做
$str = preg_split ('/\s/',$x);
print $str[0];
答案 6 :(得分:0)
此答案将删除第一个空格后的所有内容,而不是接受答案时的最后一个。使用strpos
和substr
$str = "CP hello jldjslf0";
$str = substr($str, 0, strpos( $str, ' '));
echo $str;
答案 7 :(得分:0)
我一直使用一个未提及的函数调用来完成这项确切的任务。
strstr()的第三个参数为true,将在第一次出现针线时返回子串 。
代码:(Demo)
$array = [
'x' => 'Laura Smith',
'y' => 'John. Smith',
'z' => 'John Doe'
];
foreach ($array as $key => $value) {
$array[$key] = strstr($value, ' ', true);
}
var_export($array);
输出:
array (
'x' => 'Laura',
'y' => 'John.',
'z' => 'John',
)
请注意,如果在字符串中找不到针,strstr()
将返回false
。
p.s。
explode()
来生成临时数组,而不是像strtok()
或strstr()
这样更直接的“ string in-string out”操作,请确保使用代表目标元素的索引+ 1的整数声明explode()
的第三个参数-这样,一旦函数隔离了您要查找的子字符串,该函数将停止生成新元素。答案 8 :(得分:-1)
$ x =“Laura Smith”;
$ temparray = implode('',$ x);
echo $ temparray [0];
对不起,有时混淆内爆并爆炸...