1

就像,如果这个问题标题的第二部分不存在,我可以这样做:

$string = 'Hello,this is my string.';
$replacedstring = str_replace(',', ', ', $string);

但是,如果用户确实正确格式化了句子,如Hello, this is my string.. 然后这将导致它变成Hello, this is my string.,这是我不想要的。

那么,我将如何preg_replace在 PHP 中使用和类似的正则表达式函数来做到这一点?

4

4 回答 4

9
$replaced_string = preg_replace("/,([^\s])/", ", $1", $str);

我会用这个。

于 2012-09-16T08:52:50.117 回答
2

用这个:

$ret = preg_replace('/(?<=\S,)(?=\S)/', ' ', $string);
于 2012-09-16T08:49:56.813 回答
0

您可以使用

str_replace(array(', ', ','), ', ', $string);

是多余的,因为替换,,但可能比正则表达式或任何其他算法更有效的文本不是很大

于 2012-09-16T08:53:23.517 回答
0
$string = 'Hello,this is my string, sir.';
$pattern = '/,([^ ])/'; # every comma that is followed by anything but space
$replacement = ', ';
echo preg_replace($pattern, $replacement, $string);
于 2012-09-16T09:09:45.853 回答