我们可以用空格替换所有连字符吗?但如果空格后面跟着hypen,然后是另一个空格,则不应删除它,例如,如果我得到"to be or not-to be",则输出应为"to be或not-to to be"。是否可能
这也可以(演示)
echo preg_replace('('b-'b)', ' ', 'to-be-or-not - to be');
'b
匹配单词边界。请注意,如果您还需要在字符串的开头或结尾匹配破折号,这将不起作用,例如-foo-bar-
将是-foo bar-
。
假设$input
是您的输入字符串,请尝试以下操作:
$output = preg_replace('/([^ ])-([^ ])/', '''1 ''2', $input);
echo $output;
正则表达式表示一个非空格字符[^ ]
,后面跟一个连字符,后面跟另一个非空间字符,替换模式表示第一个与''1
匹配的非空格字符,后面跟着一个空格,后面跟第二个与''2
匹配的非空间字符
您需要正则表达式/(?! )-(?! )/
。