添加一些链接到一些单词问题

时间:2013-01-24 12:12:04

标签: php

我有一些话,比如

“你好这篇关于游戏的文章。我们的选择是火车游戏。游戏名称是我的小火车”

我想添加如下的自动链接

“游戏”»“http://www.mywebsite.com

“训练游戏”»“http://www.myothersiteadrwesss.com

“game”»“http://www.my3thsiteadress.com

我尝试使用PHP和str_replace,但在我的代码之后

“游戏”一词有2个嵌套链接(“http://www.mywebsite.com”和“http://www.my3thsiteadress.com”)

“火车游戏”这个词有3个链接嵌套(所有3个链接)

如何解决我的问题?

最后我想要

<a href="http://www.my3thsiteadress.com">game</a>
<a href="http://www.myothersiteadrwesss.com">train games</a>
<a href="http://www.mywebsite.com">games</a>

字数可以改变

3 个答案:

答案 0 :(得分:1)

我认为您应该使用preg_replace代替str_replace。这样,您可以指定要更换的更严格的正则表达式(有点像&#34;匹配整个单词&#34;)。在这里,看看http://php.net/manual/es/function.preg-replace.php

答案 1 :(得分:1)

最好的方法是多步替换,一步一步......

<?php
    $string = "Hello this article about games. Our choice is train games. Name of game is My Little Train";

    // Replace first pass
    $string = str_replace("train games", "<a href='http://www.myothersiteadrwesss.com'>train ga3mes</a>", $string);
    $string = str_replace("games", "<a href='http://www.mywebsite.com'>ga3mes</a>", $string);
    $string = str_replace("game", "<a href='http://www.my3thsiteadress.com'>ga3me</a>", $string);
    $string = str_replace("ga3me", "game", $string);
    echo $string;
?>

输出

Hello this article about <a href="http://www.mywebsite.com">games</a>. Our choice
is <a href="http://www.myothersiteadrwesss.com">train games</a>. Name of <a
href="http://www.my3thsiteadress.com">game</a> is My Little Train

小提琴:http://phpfiddle.org/main/code/ny4-ium

注意

请确保,您更换的东西非常大,复杂,并且首先包含所有单词。接下来你会选择候选词。

使用str_replace,这是我能想到的最佳方式。否则,您需要使用regex并提供更复杂的搜索和替换。

答案 2 :(得分:0)

我会将数组中的所有单词都指向链接,如下所示:

$str = 'The original string that you want to replace games with!';
$arr = array('games' => 'http://website.com');

然后我将遍历该数组并使用str_replace替换字符串中的内容:

for($arr as $key => $val) {
   str_replace($key, $key . ' (' .  $val . ')', $str);
}

这会产生:

  

您要替换游戏的原始字符串   (http://website.com)与!