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

Php 如何在进行这些修改时复制此字符串,php,regex,string,Php,Regex,String,我正在尝试对此字符串执行字符串操作。我心里有一个算法,但不确定php语法 <who not="p" what="v" /> <cares i="n" want="m" /> <target my="t" what="iwant" /> 使情况复杂化的是,my=“t”似乎没有一个标准位置,它可能位于之间的任何位置。有没有关于如何使用php实现这一点的建议?我想先使用regex,或者简单地结合substr和strpo来分隔 您可以使用来确定my=“

我正在尝试对此字符串执行字符串操作。我心里有一个算法,但不确定php语法

<who    not="p" what="v" />
<cares  i="n"   want="m" />
<target my="t"  what="iwant" />

使情况复杂化的是,
my=“t”
似乎没有一个标准位置,它可能位于
之间的任何位置。有没有关于如何使用php实现这一点的建议?我想先使用regex,或者简单地结合substr和strpo来分隔

您可以使用来确定
my=“t”
是否以字符串形式出现,然后执行相应的操作

事实上,我认为将任务分解成更小的任务比使用神奇的正则表达式一次性完成任务更简单、更容易重构。

试试:

$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";
}
$l=数组(“”,“”,“”);
foreach($l作为$str){
$str=preg_replace(“#()#,”$1“,$str);
echo$str,“\n”;
}
输出:

<who    not="p" what="v" />
<cares  i="n"   want="m" />
<target my="t"  what="iwant" /><something />


既然看起来您正在使用XML,为什么不使用?+1之类的XML解析器呢?但我认为您的答案缺少一部分。如何将字符串拆分为多个
?循环遍历字符串,首先找到“/>”的strpo,然后使用substr将其剪切。@park:您可以在此处查看我的快速代码:。您仍然需要插入while循环来多次确定“/>”位置。
<who    not="p" what="v" />
<cares  i="n"   want="m" />
<target my="t"  what="iwant" /><something />