3

我有一些话比如

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

我想添加如下自动链接

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

“火车游戏”»“ http://www.myothersiteadrwesss.com

“游戏”»“ 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>

字数可以改变

4

3 回答 3

1

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

于 2013-01-24T12:41:12.757 回答
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并提供更复杂的搜索和替换。

于 2013-01-24T12:41:20.207 回答
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) 的原始字符串!

于 2013-01-24T12:42:31.943 回答