用链接文本/名称替换href

时间:2011-06-10 19:30:54

标签: php href

我在php中有一个带有许多标签的字符串...请参阅下面的更多文字说明

就像...... bla bla bla bla bla bla

<a href="test.php">link1</a'> hellllo

<a href="test.php">link2</a> hiiiiiiiiii

我的问题是我想用link1,link2,link3等替换href即test.php等等。

请帮助。 ''被添加为show只考虑它们作为正确的链接

2 个答案:

答案 0 :(得分:2)

使用DOMDocument和朋友: http://php.net/manual/en/class.domdocument.php

这样的东西,但不确定,因为它没有经过测试,而且我只是在取消文档。

$xml = new DOMDocument();
$xml->loadHTML($input_string);
$link_list = $xml->getElementsByTagName('a');
$link_list_length = $link_list->length;
for ($i = 0; $i < $link_list_length; $i++) {
    $attributes = $link_list->item($i)->attributes;
    $href = $attributes->getNamedItem('href');
    $href->value = $link_list->item($i)->nodeValue;
}
$output_string = $xml->saveHTML();

答案 1 :(得分:0)

首先,不要使用正则表达式。它可能会有所作为,但沿着这条路走下去就是疯狂。

您要做的是使用PHP的“DOM”库将字符串解析为XML。这会将HTML(假设它是有效的HTML并且没有格式错误)转换为一组对象,您可以导航,修改这些对象,然后再将其转换回字符串。

您可以在网上找到多个指南,例如this one

这纯粹是袖手旁观的代码,我没有对它进行过测试,但它应该给你一个大致的想法:

$doc = new DOMDocument();
$doc->loadHtml($YOUR_DATA); 
$links = $doc->getElementsByTagName( "a" );
foreach( $links as $link )
{
    // Modify $link however you need to
}
$CONVERTED_DATA = $doc->saveHtml();