4

特定のキーワードをリンクに変換する PHP 関数を作成しています。UTF-8 のキリル文字を使用します。だから私はこれを思いついた:

function keywords($text){

    $keywords = Db::get('keywords'); //array with words and corresponding links
    foreach ($keywords as $value){
        $keyword = $value['keyword'];
        $link = $value['link'];
        $text = preg_replace('/(?<!\pL)('.$keyword.')(?!\pL)/iu', '<a href='.$link.' class="linked">$1</a>', $text);
    }
    return $text;
}

これまでのところ、これは魅力的ですが、フレーズをリンク (他のキーワードを含む可能性のあるフレーズ) に置き換えたいと考えています。たとえば、「車」という単語をある場所にリンクさせ、「青い車」という単語を別の場所にリンクさせたいとします。

何か案は?

4

1 に答える 1

1

コメントに書かれているように、私はこれを回答として投稿します。

最初にプレースホルダーを使用してキーワードをテキストに置き換えてみてください。次に、テキスト全体が解析されたら、それらのプレースホルダーを実際の単語に置き換えることができます。

たとえば、次のフレーズを考えてみましょう。

"I have a car, a blue car." 

キーワード リストを長いものから小さいものへと並べ替えたので、「青い車」にチェックを入れます。テキストで見つけたので、プレースホルダーを配置して次を取得します。

"I have a car, a [[1]]." 

リストの 2 番目のキーワードは「車」です。テキストを置換すると、次のようになります。

"I have a [[2]], a [[1]]." 

最後に、すべてのキーワードが置換されたら、関数で preg_replace を使用してプレースホルダーを順番に置き換え、リンク付きのテキストを取得するだけです。

于 2013-05-28T14:34:17.060 に答える