我已经使用了正则表达式,但不知何故,我设法永远不会遇到这样的事情。
我希望在文件中进行一些批量搜索/替换操作,我需要在类似标签的元素中替换一些数据。例如,将<DelayEvent>13A</DelayEvent>
转换为仅<DelayEvent>X</DelayEvent>
X
,其中$new_data = preg_replace('|<DelayEvent>(\w+)</DelayEvent>|', '<DelayEvent>X</DelayEvent>', $data);
可能各不相同。
我现在这样做是这样的:
$new_data = preg_replace('|(<DelayEvent>)(\w+)(</DelayEvent>)|', '${1}X${2}', $data);
我可以稍微缩短一点:
{{1}}
但我真的想做的就是模拟“用X替换标签T之间的文字”。
有没有办法做这样的事情?本质上,我试图阻止必须匹配所有周围的数据,并在以后重新组装。我只是想用其他东西替换给定的匹配子表达式。
编辑:数据不是XML,虽然它看起来像标签式元素。我比使用RegEx解析HTML和XML更好。 ;)
答案 0 :(得分:2)
可以使用lookarounds:
$new_data = preg_replace('|(?<=<DelayEvent>)\w+(?=</DelayEvent>)|', 'X', $data);
查看在线工作:ideone