Php 查找内部的文本<;a>;及</a>;标签

Php 查找内部的文本<;a>;及</a>;标签,php,preg-replace,Php,Preg Replace,我需要一个非常小的帮助,以找到某些和标签内的内容 例如: $string = '<a href="dummyurl">TEXT</a><span>Other Text</span>'; $string='Other Text'; 我想找到“TEXT”并用其他值替换它。显然,“href”和“TEXT”的内容是动态生成的。参考:如果您确定开始标记中没有字符(明显的1除外): preg_match('/]*>(.*)/i',$string,$matc

我需要一个非常小的帮助,以找到某些和标签内的内容

例如:

$string = '<a href="dummyurl">TEXT</a><span>Other Text</span>';
$string='Other Text';

我想找到“TEXT”并用其他值替换它。显然,“href”和“TEXT”的内容是动态生成的。

参考:

如果您确定开始标记中没有
字符(明显的1除外):

preg_match('/]*>(.*)/i',$string,$matches);
$doc=新文档;
$doc->loadHTML(“其他文本”);
$archors=$doc->getElementsByTagName('a');
$len=$anchors->length;
对于($i=0;$i<$len;$i++){
如果($anchors->item($i)->nodeValue=='foo'){
$anchors->item($i)->nodeValue='newvalue';
$anchors->item($i)->setAttribute('href','new href');
}
}
$newHTML=$doc->saveHTML();
echo$newHTML;

考虑学习DOM,它将使您能够处理HTML和XML文档,并以通用的方式回答类似的问题。有一些学习曲线,它将比微调的本地正则表达式慢,但它将更加健壮,并且几乎适用于所有HTML或XML文档


PHP有一个关于在PHP中使用DOM的大章节。

您只处理HTML片段还是整个HTML文档?(相关)通常,最好显示实际代码,即使您使用链接作为示例,因此答案是自包含的。显然是来源。另外,regexp有点弱,因为贪婪匹配可能会在具有多个锚的页面中出现问题。事实上,在定义整个开始标记时没有任何用处(实际上是不可能的)。但这不是一个完美的答案,因为之前的最后一个标记可能是结束标记(例如)。得出了相同的答案,但根据此处的输入将其删除。必须是更好的正则表达式来处理此问题。链接不再工作。谁在谈论DOM?他有一个字符串$string,而不是DOM;但是链接是谁在谈论DOM?他有一个字符串$string,而不是DOM……这个字符串可以用来创建一个“microdom”,从中可以轻松地从元素中提取属性,并进行修改,或者其他任何操作。
preg_match('/<a[^>]*>(.*?)<\/a>/i', $string, $matches);
$doc = new DOMDocument;
$doc->loadHTML('<a href="dummyurl">TEXT</a><span>Other Text</span>');
$anchors = $doc->getElementsByTagName('a');
$len = $anchors->length;
for($i = 0; $i < $len; $i++) {
    if($anchors->item($i)->nodeValue == 'foo') {
        $anchors->item($i)->nodeValue = 'New Value';
        $anchors->item($i)->setAttribute('href', 'new href');
    }
}
$newHTML = $doc->saveHTML();
echo $newHTML;