3

私は次のようないくつかの言葉があります

「ゲームについてのこの記事をこんにちは。私たちの選択は電車のゲームです。ゲームの名前はMyLittleTrainです」

以下のように自動リンクを追加したい

"ゲーム"»" 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 に答える