在回显之前编辑字符串中的网址?

时间:2012-10-31 06:53:20

标签: php mysql function dom href

不确定如何完成,但如何在回显db的结果之前编辑字符串中的url?

基本上是:

来自db的字符串:

  你好,我是特里。我喜欢使用<a href="http://www.twitter.com">Twitter</a>,但我更喜欢使用<a href="http://www.facebook.com">Facebook</a>。我喜欢在<a href="http://www.mycoolsite.com">My Cool Site</a>的网站上发布博客,我喜欢体育运动。

但我想回应一下:

  你好,我是特里。我喜欢使用<a href="http://www.somepage.com/home?url=http://www.twitter.com">Twitter</a>,但我更喜欢使用<a href="http://www.somepage.com/home?url=http://www.facebook.com">Facebook</a>。我喜欢在<a href="http://www.somepage.com/home?url=http://www.mycoolsite.com">My Cool Site</a>的网站上发布博客,我喜欢体育运动。

例如:用http://www.twitter.com

替换href中的http://www.somepage.com/home?url=http://www.twitter.com

3 个答案:

答案 0 :(得分:1)

$string="Hello, I am Terry. I like using <a href="http://www.somepage.com/home?url=http://www.twitter.com">Twitter</a>, but I prefer using <a href="http://www.somepage.com/home?url=http://www.facebook.com">Facebook</a>. I like posting blogs on my website at <a href="http://www.somepage.com/home?url=http://www.mycoolsite.com">My Cool Site</a>, and I enjoying playing sports."

preg_replace('/<a href="([^"]*)" >/','<a href="someurl?url=$1" >',$string)

答案 1 :(得分:1)

这就是你真正想要的,

<?php   /** PHP, JavaScript and HTML/CSS mixed-code sample */

$string = 'Hello, I am Terry. I like using <a href="http://www.twitter.com">Twitter</a>, but I prefer using <a href="http://www.facebook.com">Facebook</a>. I like posting blogs on my website at <a href="http://www.mycoolsite.com">My Cool Site</a>, and I enjoying playing sports.';    
$myurl = "http://www.somepage.com/home?url=";

$result = preg_replace('/(<a[^>]*href[\s]*=["|\'])(.*?["|\'])/', "$1$myurl$2", $string);

echo $result;
?>

您可以在phpfiddle.org上尝试使用该代码。如果你需要改变,请告诉我。

更新后的代码:

<?php
$string = 'Hello, I am Terry. I like using <a href="http://www.twitter.com">Twitter</a>, but I prefer using <a href="http://www.facebook.com">Facebook</a>. I like posting blogs on my website at <a href="http://www.mycoolsite.com">My Cool Site</a>, and I enjoying playing sports.';
$myurl = "http://www.somepage.com/home?url=";

preg_match_all('/(<a[^>]*href[\s]*=)["|\'](.*?)["|\']/', $string, $result, PREG_SET_ORDER);

for($i=0;$i<count($result);$i++){
    $string = str_replace($result[$i][0], $result[$i][1] .'"'. $myurl . urlencode($result[$i][2]) .'"'  ,$string);
}

?>
<!--<textarea><?php echo $string; ?></textarea>-->
<?php echo $string; ?>

答案 2 :(得分:0)

快速而肮脏的方式来完成它,

$new_string = str_replace('href="', 'href="http://www.somepage.com/home?url=', $old_string);