我为无法弄清楚这一点而感到非常愚蠢,但我就是想不通。我需要用模式替换正则表达式字符串,我找到了两个这样做的例子,但老实说,它们让我比以往任何时候都更加困惑。
这是我目前的尝试:
$string = '26 14:46:54",,"2011-08-26 14:47:02",8,0,"BUSY","DOCUMENTATION","1314370014.18","","","61399130249","7466455647","from-internal","""Oh Snap"" <61399130249>","SIP/1037-00000014","SIP/CL-00000015","Dial","SIP/CL/61436523277,45","2011-08-26 14:47:06","2011-08-26 14:47:15","2011-08-26 ';
$pattern = '["SIP/CL/\d*?,\d*?",]';
$replacement = '"SIP/CL/\1|\2",';
$string = preg_replace($pattern, $replacement, $string);
print($string);
但这只是将 \1
和 \2
替换为空白。所以很明显我没有理解整个概念。
最后我想要的是改变:
this: "SIP/CL/61436523277,45"
to: "SIP/CL/61436523277|45"
格式不正确的 CSV 中的逗号会影响我的一些其他脚本。
最佳答案
你缺少大括号,模式应该是这样的:
$pattern = '["SIP/CL/(\d*),(\d*)",]';
关于php - 如何用正则表达式模式替换正则表达式模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8903547/