在<a> and </a>标记内找到文字

时间:2010-12-11 00:23:11

标签: php preg-replace

我需要一些帮助才能找到某些内容和标签内的内容。

示例:

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

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

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

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

preg_match('/<a[^>]*>(.*?)<\/a>/i', $string, $matches);

答案 2 :(得分:2)

$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;

http://php.net/manual/en/class.domdocument.php

答案 3 :(得分:0)

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

PHP在PHP within the manual中使用DOM有很大的篇幅。