正则表达式在PHP中用“”替换My Name Surname

时间:2010-04-22 07:33:21

标签: php regex

我需要一个正则表达式来替换像这样的字符串

"Myname _MySurename"  with "Myname" 

这意味着我只需要Myname,所以_MySurename应该被删除。

我尝试了类似“/ _ * /”的东西,但只替换了_(下划线) 我怎么能用PHP做到这一点?

3 个答案:

答案 0 :(得分:2)

您可以将underscore和以下word替换为:

$str = preg_replace('/_\w+/','',$str);

看起来你的名字后面还有一个空格。所以你可以使用:

$str = preg_replace('/\s*_\w+/','',$str);

答案 1 :(得分:1)

根据你的描述,你很明显 知道你的字符串必须哪里 拆分
因此:最好不要使用正则表达式替换,
但使用正则表达式拆分:

preg_split('/\s*_/', $text)

这将返回拆分条目列表, 得到第一个,例如由:

...
$names = 'Myname_MySurename'; #  'Myname _MySurename';
# print first element of splitted array
$firstname = array_shift( preg_split('/\s*_/', $names) );
...

此致

RBO

答案 2 :(得分:0)

尝试:

/\s_.+$/

“替换空格(空格),后跟下划线和多个字符”。 $确保在字符串的末尾匹配它。

这是未经测试的,但应该有效。