2

私は通常、PHPの問題をすべて自分で解決するのにかなり効率的ですが、この特定の問題では、実用的な解決策を見つけることができないようです。

標準のテキストで構成される$stringがあり、テキストには[角かっこ]で囲まれた特定のキーワードがあり、リンクに変換したいのですが、文字列をの事前定義された配列と比較する単純なケースではありません。 [既知の」キーワードと単純な置換の実行。[角かっこ]の内容は何でもかまいません。

たとえば、次のものが必要になります。

John Roberts is a jazz musician from Florida born in 1934. Some of his notable works include [A Gray Sky] and [Sophomore Effort].

次のように変換する必要があります。

John Roberts is a jazz musician from Florida born in 1934. Some of his notable works include <a href="search.php?search=a+gray+sky">A Gray Sky</a> and <a href="search.php?search=sophomore+effort">Sophomore Effort</a>.

注意すべきこと:

  • $ stringには、不明な量の[括弧で囲まれた単語]が含まれます。
  • 問題が発生する場合は角かっこを使用する必要はありませんが、今のところ、最も便利な方法のようです。

私は誰かにコードを教えてくれるように頼んでいるのではありません。必要なのは、調査すべきPHP関数の種類を教えて、正しい方向に向けてくれる人だけです。

どうもありがとうございました、そして私に質問する機会を与えてくれたStackoverflowに感謝します!

4

1 に答える 1

3
$string = "John Roberts is a jazz musician from Florida born in 1934. Some of his notable works include [A Gray Sky] and [Sophomore Effort].";

function rep_callback($match)
{
        $query = substr($match[0],1,-1);
        $query = urlencode($query);
        $link = '<a href="search.php?search='.$query.'">'.$match[0].'</a>';
        return $link;
}

echo $string."\n";
echo preg_replace_callback("/\[.+\]/U", "rep_callback", $string)."\n";

出力:

John Roberts is a jazz musician from Florida born in 1934. Some of his notable works include [A Gray Sky] and [Sophomore Effort].
John Roberts is a jazz musician from Florida born in 1934. Some of his notable works include <a href="search.php?search=A+Gray+Sky">[A Gray Sky]</a> and <a href="search.php?search=Sophomore+Effort">[Sophomore Effort]</a>.
于 2012-05-08T03:06:08.530 に答える