首页 > 解决方案 > 替换空格,但仅限于限制php之间

问题描述

我想使用 PHP 用另一个字符串替换空格。

我这样做如下

$string = 'whatever text including some $text between delimiters$ and...';
$string_replaced = preg_replace('/\s\s+/', '\:', $string);

但是它替换了字符串中的所有空格,这很符合逻辑。

我只希望正则表达式在$分隔符之间应用。

官方preg_replace()文档中,我找不到任何可能有帮助的东西。

所以我想我错过了一些允许这样做的 PHP 功能。

标签: phpregex

解决方案


您可以使用preg_replace_callback匹配$符号之间的所有文本'/\$[^$]*\$/',然后仅在这些匹配的文本中替换 1+ 个空格:

$string = 'whatever text including some $text between delimiters$ and...';
$string_replaced = preg_replace_callback('~\$[^$]*\$~', function($m) {
   return preg_replace('~\s+~u', ':', $m[0]);
}, $string);

查看PHP 演示


推荐阅读