php preg#u replace:查找链接并向其添加#散列?
我有以下结构php preg#u replace:查找链接并向其添加#散列?,php,hash,preg-replace,Php,Hash,Preg Replace,我有以下结构 $output='' 实际上,$output包含多个列表项 将散列应用于每个链接href的最佳且最简单的方法是什么?如 你知道怎么解决吗 编辑:顺便说一句,它应该始终是相同的#散列,而不是像您在上面的示例中所想的那样,#something等于链接的名称。因此,每个环节都应该有一些内容 add_filter('wp_list_pages', 'add_hash'); /*Add #hash to wp_list_pages() function*/ function add_has
$output=''
实际上,$output包含多个列表项
将散列应用于每个链接href的最佳且最简单的方法是什么?如
你知道怎么解决吗
编辑:顺便说一句,它应该始终是相同的#散列,而不是像您在上面的示例中所想的那样,#something等于链接的名称。因此,每个环节都应该有一些内容
add_filter('wp_list_pages', 'add_hash'); /*Add #hash to wp_list_pages() function*/
function add_hash($output) {
$dom = new DOMDocument();
$dom->loadHTML($output);
$a_tags = $dom->getElementsByTagName('a');
foreach($a_tags as $a)
{
$value = $a->getAttribute('href');
$a->setAttribute('href', $value . '#b');
}
$dom->saveHTML();
return $output;
}
编辑:
在上述代码中,您需要更改:
$dom->saveHTML();
return $output;
}
致:
您应该尝试调整插入#散列的列表生成代码,而不是修改连接的结果。这不起作用!当我尝试
回显$value时
在foreach循环内部,它工作得很好,但是当我尝试echo$a代码>页面的其余部分无法获得输出。我的控制台告诉我PHP致命错误:调用未定义的方法DOMNodeList::setAttribute()
@mathiregister:你能用你尝试过的确切代码编辑你的问题吗?编辑我的帖子了吗。如果我没有在循环中回显任何内容,比如我问题中的编辑,所有内容都会正确输出,但没有#hash.Perfect。我试过了,但是。。。无论什么现在一切正常。感谢您提供的绝妙解决方案。
$dom->saveHTML();
return $output;
}
return $dom->saveHTML();
}