在preg_replace正则匹配的时候为什么会多出一个“?”号
我是用file_get_contents读取一个文件。
代码如下
<?php
$new_title = ">2001年 1月 2日 周三";
echo $new_title;
$filename = "1/1.txt";
$fcontent = file_get_contents($filename);
$pattern = "/(.+)>(\d{4}年)?\s?\d{1,2}月\s?\d{1,2}日\s*周[一|二|三|四|五|六|日](.+)/";
$ncontent = preg_replace($pattern,"\${1}$new_title\${3}" ,$fcontent);
$tt = preg_replace($pattern,"\${3}" ,$fcontent);
echo $tt;
file_put_contents($filename, $ncontent);
?>
匹配和替换都没有问题,但是问题是\${3}截取出来的,前面总是多一个“?”号。
我用 $tt把后面部分显示出来果然多了一个?号。
比如要匹配的那行为 “<p><font size="+2"><strong>2005年 6月 5日 周五 13:00 免费公开课(北京)</strong></font></p>”
我匹配完以后那行却为 “<p><font size="+2"><strong>2001年 1月 2日 周三?13:00 免费公开课(北京)</strong></font></p>”
不知道哪位有遇到相同问题的指教一下。