我遇到了一个难以解决的问题。我正在替换a-tags和img-tags以符合我的建议。到目前为止一切都很好。
$search = array('|(<a\s*[^>]*href=[\'"]?)|', '|(<img\s*[^>]*src=[\'"]?)|');
$replace = array('\1proxy2.php?url=', '\1'.$url.'/');
$new_content = preg_replace($search, $replace, $content);
现在我的问题是页面上有链接我获取的内容如下:
<a href="/test/page/">
和
<a href="http://google.se/test/">
更换这两个链接后,如下所示:
<a href="proxy2.php?url=/test/page/">
和
<a href="proxy2.php?url=http://google.se/test/">
我的问题是,我希望在/ test / page /之前包含一个名为$ url的变量,并且只包含那些类似的链接,而不是之前已经是http://或https://的链接
答案 0 :(得分:2)
这应该为锚标签做好工作,至少:
<?php
function prepend_proxy($matches) {
$url = 'http://example.prefix';
$prepend = $matches[2] ? $matches[2] : $url;
$prepend = 'proxy2.php?url='. $prepend;
return $matches[1] . $prepend . $matches[3];
}
$new_content = preg_replace_callback(
'|(href=[\'"]?)(https?://)?([^\'"\s]+[\'"]?)|i',
'prepend_proxy',
$content
);
?>
答案 1 :(得分:0)
这可以解决问题
$search = array('@(<a\s*[^>]*href=[\'"]?)(https?://)?@');
$replace = array('\1proxy2.php?url=');
$new_content = preg_replace($search, $replace, $content);
结果:
&lt; a href =“proxy2.php?url = / test / page /”&gt;
&lt; a href =“proxy2.php?url = google.se / test /”&gt;
答案 2 :(得分:0)
只需让您的proxy2.php更智能一点。如果有完全限定的网址(http://..。),请重定向到该网址。如果有本地网址(例如/ test / page /),请删除丢失的内容(例如http://www.mylittleapp.com/test/page/)并重定向。
答案 3 :(得分:0)
<a href="proxy2.php?url=/test/page/">
<a href="proxy2.php?url=google.se/test/">
而不是我希望它显示的内容,我希望它显示为这样,并在前面加上网址:
<a href="proxy2.php?url=**THEURLHERE.COM**/test/page/">
<a href="proxy2.php?url=google.se/test/">
抱歉,我工作,我正在使用URL VARIABEL做错了。谢谢你![/ p>