在问号和感叹号之前添加空格
问题描述:
我的客户希望在感叹号和问号之前留出空格。为了确保这样做总是正确的,我在php中使用下面的脚本。此脚本将删除任何现有的空间,然后所有问号和感叹号之前把一个非换空间:在问号和感叹号之前添加空格
$text = str_replace(' ?', '?', $text);
$text = str_replace('?', ' ?', $text);
$text = str_replace(' !', '!', $text);
$text = str_replace('!', ' !', $text);
return $text;
这一切工作正常,但我在想,如果有一个与正则表达式更好的办法?
答
preg_replace("/\s?(!|?)/", " $1", $string);
答
您可以使用
$text = "No? Oh ? And ! and!";
$text = preg_replace('~\s*([?!])~', ' $1', $text);
echo $text;
详细:
-
\s*
- 0+空格符号 -
([?!])
- 第1组捕获?
或!
替换模式只包含
和反向引用,以第1项内容插入捕获的文本。
感谢戴夫对格式化的重新编排 - 我总是在与代码标签争执 - 这四个空间似乎并不适合我。 –