我已使用simple_html_dom.php将外部内容插入到我的页面中,但所有href都不起作用,例如:
href='oldpage.php'
我希望将此更改为
href='http://localhost/oldpage.php'
或
href='http://localhost/mynewpage.php'
有没有办法将所有href更改为新的href,比如在它之前添加一些字符串? 谢谢
答案 0 :(得分:1)
您可以使用 .each()
来迭代您的锚标记。然后使用 .attr
,您应该能够获得href属性值。
然后使用+
添加字符串应该可以完成工作。所以像下面这样的东西应该工作
$("a.links").each(function(){
var $this = $(this);
var currentHref = $this.attr("href");
var modifiedHref = "your string" + currentHref;
$this.attr("href", modifiedHref);
});
答案 1 :(得分:1)
你可以做一个简单的字符串替换,如:
.innerHTML
或与domdocument:
str_replace('href="', 'href="http://www.example.com/', $string);
输出:
$page = '<html><head></head><body><a href="simple"></a><h1>Hi</h1><a href="simple2"></a></body></html>';
$doc = new DOMDocument();
$doc->loadHTML($page);
$as = $doc->getElementsByTagName('a');
foreach($as as $a){
$a->setAttribute('href', 'http://www.example.com/' . $a->getAttribute('href'));
}
print_r($doc->saveHTML());
这并未考虑绝对路径,您需要采用正则表达式方法..
如果报价类型不同,您还需要使用<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><head></head><body><a href="http://www.example.com/simple"></a><h1>Hi</h1><a href="http://www.example.com/simple2"></a></body></html>
示例的正则表达式。可以执行str_replace
之类的操作,然后使用('|")
匹配报价类型。
答案 2 :(得分:1)
您只需要添加
<base href="http://localhost/"></base>
头部内侧。 它为所有其他锚标记创建基本URL。会根据需要转换Url。
它适合你。 试试吧。
答案 3 :(得分:0)
这是使用 replace
//replace selector 'a' with your css selector if needed
for(var i=0;i<document.querySelectorAll('a').length;++i){
var new_href=document.querySelectorAll('a')[i].getAttribute('href').replace(/(http:[/]{2}localhost)[/].*/ig, '$1/mynewpage.php')
document.querySelectorAll('a')[i].setAttribute('href',new_href)
}
//
答案 4 :(得分:0)
只需附加&#34; /&#34;在您的网址之前
href='oldpage.php' => href='/oldpage.php'