我们说我有以下字符串:
<?php
$str = 'To subscribe go to <a href="http://foo.com/subscribe">Here</a>';
?>
我尝试做的是在字符串中找到具有特定域名的URL,&#34; foo.com&#34;对于此示例,然后附加网址。
我想要完成的事情:
<?php
$str = 'To subscribe go to <a href="http://foo.com/subscribe?package=2">Here</a>';
?>
如果网址中的域名不是foo.com,我不希望他们被追加。
答案 0 :(得分:1)
您可以使用parse_url()
函数和php的DomDoccument
类来操作网址,如下所示:
$str = 'To subscribe go to <a href="http://foo.com/subscribe">Here</a>';
$dom = new DomDocument();
$dom->loadHTML($str);
$urls = $dom->getElementsByTagName('a');
foreach ($urls as $url) {
$href = $url->getAttribute('href');
$components = parse_url($href);
if($components['host'] == "foo.com"){
$components['path'] .= "?package=2";
$url->setAttribute('href', $components['scheme'] . "://" . $components['host'] . $components['path']);
}
$str = $dom->saveHtml();
}
echo $str;
输出:
To subscribe go to [Here]
^ href="http://foo.com/subscribe?package=2"
以下是参考资料: