我的字符串是:
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);
它什么都不做(甚至不做任何更改就不会打印字符串。)
答案 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));
5.6.38-7.3.0的输出
bool(true)
参考文献:
http://php.net/manual/de/function.strpos.php
答案 2 :(得分:0)
黑暗Absol的尼特怎么说。您需要定界符。此外,您的正则表达式(即使带有定界符)也会说:“ 0无限空格,后跟1无限单词字符,后跟1无限空格,后跟'w /'”。
这不是您想要的。您要删除斜杠之前的单词-和斜杠。您将需要类似@\w+/@
(其中@
sybmol是定界符)之类的内容,并用''
代替它,例如preg_replace('@\w+/@', '', $string);
替换任何单词,然后将斜杠替换为空。