如何在 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 中替换字符串中一个数字加上一个带逗号的空格的所有匹配项的主要内容,如果未能解决你的问题,请参考以下文章
Notepad ++替换相同文本的正则表达式匹配加上附加字符