我们可以用空格替换所有连字符但是如果空格后面跟着hypen然后是另一个空格则不应该删除它,例如,如果我得到“将要成为或未成为”的输出应该是“成为与否 - 成为“。是否可能
答案 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)
你想要正则表达式/(?! )-(?! )/
。