用空格替换连字符,但不应替换空格连字符空格

时间:2012-02-21 09:12:21

标签: php

我们可以用空格替换所有连字符但是如果空格后面跟着hypen然后是另一个空格则不应该删除它,例如,如果我得到“将要成为或未成为”的输出应该是“成为与否 - 成为“。是否可能

3 个答案:

答案 0 :(得分:3)

这也可以(demo

echo preg_replace('(\b-\b)', ' ', 'to-be-or-not - to be');

\b匹配字边界。请注意,如果您还需要在字符串的开头或结尾处匹配短划线,则此操作无效,例如-foo-bar-将为-foo bar-

答案 1 :(得分:0)

假设$input是您的输入字符串,请尝试:

$output = preg_replace('/([^ ])-([^ ])/', '\\1 \\2', $input);
echo $output; 

正则表达式表示一个非空格字符[^ ],后跟一个连字符,后跟另一个非空格字符,替换模式意味着第一个非空格字符匹配\\1,后跟空格,后跟第二个匹配\\2 的非空格字符。

答案 2 :(得分:0)

你想要正则表达式/(?! )-(?! )/