php - 替换空格,但仅限于限制php之间
问题描述
我想使用 PHP 用另一个字符串替换空格。
我这样做如下:
$string = 'whatever text including some $text between delimiters$ and...';
$string_replaced = preg_replace('/\s\s+/', '\:', $string);
但是它替换了字符串中的所有空格,这很符合逻辑。
我只希望正则表达式在$
分隔符之间应用。
在官方preg_replace()
文档中,我找不到任何可能有帮助的东西。
所以我想我错过了一些允许这样做的 PHP 功能。
解决方案
您可以使用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 演示
推荐阅读
- android - 在 Android Studio 3.4 中更新到 gradle 5.1.1 后无法同步
- kubernetes - 如何为示例 Istio 应用程序公开外部 IP 地址
- haskell - 通过电子邮件发送文件的虚假目标?
- python - 我怎样才能告诉程序只允许某种类型的输入?
- javascript - AngularJS / Webix UI 集成 - HTML 控件不变
- oracle - 将 ColdFusion 8 连接到 Oracle 12c
- rcpp - 如何从 RCPP 调用 model.matrix 或等效项,可能在线程代码中?
- python - pipenv install 每次都安装依赖项 / Pycharm 无法识别它们
- excel-formula - Excel 中用于聚合数据的逻辑函数
- html - 最小化 iOS 邮件应用程序会破坏 CSS 动画中的 z-index