我在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只考虑它们作为正确的链接
答案 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();