如何在进行这些修改时复制此字符串

时间:2011-01-12 04:28:51

标签: php regex string

我正在尝试对此字符串执行字符串操作。我有一个算法,但不确定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做到这一点?我在想正则表达式

2 个答案:

答案 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 />