使用PHP仅删除特定字符之前的第一个单词

时间:2018-12-11 11:27:22

标签: php

我的字符串是:

your string here, please/do it by yourself.

我想删除斜杠(带有斜杠)之前和末尾的单词以获取此信息:

your string here, do it by yourself.

我的代码是:

$string = 'your string here, please/do it by yourself.';
$parsed = preg_replace("\s*\w+\s+(?:w/)", '', $string);

它什么都不做(甚至不做任何更改就不会打印字符串。)

3 个答案:

答案 0 :(得分:1)

您的正则表达式没有定界符,只是没有意义...

“零个或多个空格,一个或多个单词字符,一个或多个空格,后跟w然后是/” ...是吧

$parsed = preg_replace("(\w+/)","",$string);
echo $parsed;

答案 1 :(得分:1)

不依赖正则表达式的替代解决方案:

<?php

$example = 'your string here, please/do it by yourself.';
$expected = 'your string here, do it by yourself.';

$slashPos = strpos($example, '/');
$spacePos = strrpos($example, ' ', -1 * $slashPos);

$string1 = substr($example, 0, $spacePos + 1); // Add 1 here to not remove space
$string2 = substr($example, (strlen($example) - $slashPos - 1) * -1); // Subtract 1 here to remove /

$result = $string1 . $string2;

var_dump(assert($expected === $result));

https://3v4l.org/XVruS

  

5.6.38-7.3.0的输出

     

bool(true)

参考文献:

http://php.net/manual/de/function.strpos.php

http://php.net/manual/de/function.strrpos.php

http://php.net/manual/de/function.substr.php

答案 2 :(得分:0)

黑暗Absol的尼特怎么说。您需要定界符。此外,您的正则表达式(即使带有定界符)也会说:“ 0无限空格,后跟1无限单词字符,后跟1无限空格,后跟'w /'”。

这不是您想要的。您要删除斜杠之前的单词-和斜杠。您将需要类似@\w+/@(其中@ sybmol是定界符)之类的内容,并用''代替它,例如preg_replace('@\w+/@', '', $string);替换任何单词,然后将斜杠替换为空。