如何删除PHP中的空格后的所有内容?

时间:2012-08-29 12:18:57

标签: php replace preg-replace

我有一个有名字的数据库,我想在名字空格后使用PHP替换,数据示例:

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

我希望它返回

Laura
John.
John

9 个答案:

答案 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)

试试这个

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

strtok

答案 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)

此答案将删除第一个空格后的所有内容,而不是接受答案时的最后一个。使用strpossubstr

$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。

  • 由于存在单功能技术来执行此任务,因此没有令人信服的理由使用多功能技术来完成相同的工作。
  • 因为针是静态字符串(空格),所以绝对没有没有理由引入正则表达式调用的开销
  • 如果有人考虑the use of explode()来生成临时数组,而不是像strtok()strstr()这样更直接的“ string in-string out”操作,请确保使用代表目标元素的索引+ 1的整数声明explode() 的第三个参数-这样,一旦函数隔离了您要查找的子字符串,该函数将停止生成新元素。

答案 8 :(得分:-1)

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

对不起,有时混淆内爆并爆炸...