为了账号安全,请及时绑定邮箱和手机立即绑定

PHP preg_replace - 文本不会被识别

PHP preg_replace - 文本不会被识别

PHP
幕布斯7119047 2021-11-26 17:41:48
我在使用 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 \\\$/";


查看完整回答
反对 回复 2021-11-26
?
森林海

TA贡献2011条经验 获得超2个赞

理解你的问题有点困难,但我发现你的意思是导致问题的$Id部分$insert_marker。您需要使用反斜杠转义 $,如下所示:$insert_marker = "/##-- \$Id: _.htaccess 10934 2017-08-31 12:11:28Z serpent_driver $/";


查看完整回答
反对 回复 2021-11-26
  • 2 回答
  • 0 关注
  • 187 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信