我在使用 preg_replace 时遇到问题。$insert_marker 文本将无法识别,并且是由“$”引起的。如果我删除 2 $ 字符,它的工作原理。那么问题出在哪里呢?function insert_into_file($file_path, $insert_marker, $text, $after = true) { $contents = file_get_contents($file_path); $new_contents = preg_replace($insert_marker, ($after) ? '$0' . $text : $text . '$0', $contents); return file_put_contents($file_path, $new_contents);}$file_path = ".htaccess";$insert_marker = "/##-- $Id: _.htaccess 10934 2017-08-31 12:11:28Z serpent_driver $/";$text = "\n##added text";$num_bytes = insert_into_file($file_path, $insert_marker, $text, true);if ($num_bytes === false) { echo "Could not insert into file $file_path.";} else { echo "Insert successful!";}
2 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
$
是正则表达式的特殊字符(它意味着行尾),您必须对其进行转义:\$
并且因为您正在使用包含正则表达式的变量并将其作为函数的参数传递,您必须进行三次转义:
$insert_marker = "/##-- \\\$Id: _.htaccess 10934 2017-08-31 12:11:28Z serpent_driver \\\$/";
森林海
TA贡献2011条经验 获得超2个赞
理解你的问题有点困难,但我发现你的意思是导致问题的$Id
部分$insert_marker
。您需要使用反斜杠转义 $,如下所示:$insert_marker = "/##-- \$Id: _.htaccess 10934 2017-08-31 12:11:28Z serpent_driver $/";
- 2 回答
- 0 关注
- 187 浏览
添加回答
举报
0/150
提交
取消