在问号和感叹号之前添加空格

时间:2016-12-06 12:33:13

标签: php regex

我的客户希望在惊叹号和问号之前留一个空格。为了确保始终正确完成,我在php中使用以下脚本。此脚本删除所有现有空格,然后在所有问号和感叹号之前放置一个不间断的空格:

JOIN

一切正常,但我想知道Regex是否有更好的方法?

3 个答案:

答案 0 :(得分:5)

您可以使用

$text = "No? Oh ? And ! and!";
$text = preg_replace('~\s*([?!])~',  ' $1', $text);
echo $text;

请参阅PHP demo

<强>详情:

  • \s* - 0+空白符号
  • ([?!]) - 第1组捕获?!

替换模式仅包含&nbsp;以及对第1组内容的反向引用以插入捕获的文本。

答案 1 :(得分:3)

使用preg_replace

使用正则表达式,它看起来像这样:

preg_replace('/(\S)([?!])/', '$1 $2', $text);

答案 2 :(得分:1)

preg_replace("/\s?(!|?)/", "&nbsp;$1", $string);