如何在 PHP 中替换字符串中一个数字加上一个带逗号的空格的所有匹配项

Posted

技术标签:

【中文标题】如何在 PHP 中替换字符串中一个数字加上一个带逗号的空格的所有匹配项【英文标题】:How to replace in PHP all matches of a digit plus a space with comma in a string 【发布时间】:2021-03-30 19:38:04 【问题描述】:
$str = "Hello 1234567 Stack 56789 Overflow 12345";

$str = preg_replace('/([0-9] )/', ',', $str);

我想要这个“你好 1234567,堆栈 56789,溢出 12345,...”

【问题讨论】:

您的预期输出不清楚。 【参考方案1】:

我会使用正则表达式逻辑,它明确地针对左边的数字和右边的字母的空格:

$input = "Hello 1234567 Stack 56789 Overflow 12345";
$output = preg_replace('/(?<=\d) (?=\D)/', ', ', $input);
echo $input . "\n" . $output;

打印出来:

Hello 1234567 Stack 56789 Overflow 12345
Hello 1234567, Stack 56789, Overflow 12345

【讨论】:

【参考方案2】:

使用

preg_replace('/\d(?=\s)/', '$0,', $str)

见proof。

表达式解释

--------------------------------------------------------------------------------
  \d                       digits (0-9)
--------------------------------------------------------------------------------
  (?=                      look ahead to see if there is:
--------------------------------------------------------------------------------
    \s                       whitespace (\n, \r, \t, \f, and " ")
--------------------------------------------------------------------------------
  )                        end of look-ahead

【讨论】:

以上是关于如何在 PHP 中替换字符串中一个数字加上一个带逗号的空格的所有匹配项的主要内容,如果未能解决你的问题,请参考以下文章

用php中的随机数字替换字符串中的奇数位置

php 如何在变量中添加字符串

Notepad ++替换相同文本的正则表达式匹配加上附加字符

用字符串中的任何字符查找任何数字和空格的匹配模式并替换为 |在 PHP [关闭]

如何在 SQL 中替换 json 字符串中的数字数组?

SQL如何批量更新某列中一个字符为另一个字符