我正在尝试对此字符串执行字符串操作。我有一个算法,但不确定PHP语法。
<who not="p" what="v" />
<cares i="n" want="m" />
<target my="t" what="iwant" />
在每个开始和结束对<
和/>
之间,字符串my="t"
可能存在也可能不存在(在此示例中,它仅存在于第三行)。如果它不存在,我想按原样复制整个< />
。如果存在,我想在其后添加<something />
。所以我希望这个字符串看起来像这样
<who not="p" what="v" />
<cares i="n" want="m" />
<target my="t" what="iwant" /><something />
使情况复杂化的是my="t"
似乎没有标准职位,可能是< />
之间的任何地方。有任何建议如何用PHP做到这一点?我在想正则表达式
答案 0 :(得分:1)
首先,我认为你可以使用正则表达式,或者简单地使用substr&amp; amp; strpos to分隔<... />
您可以使用strstr确定my="t"
是否出现在字符串中,然后执行适当的操作。
实际上,我认为将你的任务分解成更小的任务,比使用神奇的正则表达式一次性完成全部攻击更简单,更容易重构。
答案 1 :(得分:1)
尝试使用:
$l = array('<who not="p" what="v" />','<cares i="n" want="m" />','<target my="t" what="iwant" />');
foreach ($l as $str) {
$str = preg_replace('#(<.*?my="t".*? />)#', "$1<something />", $str);
echo $str,"\n";
}
<强>输出:强>
<who not="p" what="v" />
<cares i="n" want="m" />
<target my="t" what="iwant" /><something />