我的客户希望在惊叹号和问号之前留一个空格。为了确保始终正确完成,我在php中使用以下脚本。此脚本删除所有现有空格,然后在所有问号和感叹号之前放置一个不间断的空格:
JOIN
一切正常,但我想知道Regex是否有更好的方法?
答案 0 :(得分:5)
您可以使用
$text = "No? Oh ? And ! and!";
$text = preg_replace('~\s*([?!])~', ' $1', $text);
echo $text;
请参阅PHP demo
<强>详情:
\s*
- 0+空白符号([?!])
- 第1组捕获?
或!
替换模式仅包含
以及对第1组内容的反向引用以插入捕获的文本。
答案 1 :(得分:3)
答案 2 :(得分:1)
preg_replace("/\s?(!|?)/", " $1", $string);