Php 卡在一个简单的preg_替换为backreference上
对不起,伙计们,我被困在这上面了:Php 卡在一个简单的preg_替换为backreference上,php,regex,preg-replace,regex-group,backreference,Php,Regex,Preg Replace,Regex Group,Backreference,对不起,伙计们,我被困在这上面了: $data_update = preg_replace($id.'(.*?)'.$s.PHP_EOL, $id.$1.$s.$text.PHP_EOL, $data_update, 1); $id = '23423'; $s = '|'; $text = 'content to insert'; 基本上,我要做的是在一个有多行的平面文件文本中匹配$id和PHP行尾之间的所有内容,并将其替换为在行尾之前插入一些内容的同一行。我在末尾有“1”修饰符,因为我希望
$data_update = preg_replace($id.'(.*?)'.$s.PHP_EOL, $id.$1.$s.$text.PHP_EOL, $data_update, 1);
$id = '23423';
$s = '|';
$text = 'content to insert';
基本上,我要做的是在一个有多行的平面文件文本中匹配$id和PHP行尾之间的所有内容,并将其替换为在行尾之前插入一些内容的同一行。我在末尾有“1”修饰符,因为我希望这只发生在与该id匹配的行上
我做错了什么?我建议使用
preg_replace('/\b(' . $id . '\b.*)(\R)/', '$1 ' . $text . '$2', $data_update, 1);
该模式看起来像\b(23423\b.*)(\R)
,并且将匹配
-单词边界\b
-第1组:ID作为一个单词,然后是行的其余部分(23423\b.*)
-第2组:任何换行顺序(\R)
Some text 23423 in between end content to insert
some text
为什么要使用
$s=“|”
?请张贴该行的例子。可能您需要preg\u replace('/\b('.$id'.\b.*)(\R)/','$1'.$text'.$2',$data\u update,1)代码>?请参阅。@WiktorStribiżew我需要为EOL进行修补,因为行尾已作为PHP_EOL插入到平面文件文本中,所以您可以将我的数据变量视为:$data_update=“23423在某些文本之间”。PHP_EOL
$data\u update.=“00000在更多文本之间”。PHP\u EOL
$data\u update.=“11111在更多文本之间”。PHP\u EOL代码>如果你需要帮助,请提供一个。你的例子很有帮助,PHP演示对我来说很好!谢谢大家!@WiktorStribiżew
Some text 23423 in between end content to insert
some text