-1

特定の文字列から特定の単語をスタイルする方法は?

$myString = "foo bar";

文字列上で特定の単語が見つかった場合にその単語を太字にして、文字列を再度返す関数を作成する方法

$formattedString = Bold('foo',$myString);
echo $formattedString ;

期待される結果:

fooバー

これどうやってするの ?入力したユーザー クエリに基づいて、検索結果のキーワードやフレーズを太字にする必要があります

どんな助けでもいただければ幸いです

4

3 に答える 3

1

次のような意味ですか:

function Bold($text, $str) {
    return str_replace($text, "<strong>".$text."</strong>", $str);
}
echo Bold("test", "this is a test");
于 2012-08-15T05:01:46.070 に答える
0

最も簡単な方法は、を使用することstr_replace("foo", "<b>foo</b>", $string)です。

またRegExp、同じ操作を実行するために使用できます。

更新:スタイリングのためのより高度な機能を使用するには、RegExp次の方法を使用できます。

function bold($text, array $words) {
    return preg_replace('/\b('.implode('|', $words).')\b/i', '<b>$1</b>', $text);
}

この関数を使用すると、編集する必要がある単語の配列を送信することで、一度に複数の単語のスタイルを設定できます。bold

更新:この関数の高度な高度なバリアントは次のようになります。

function bold($text, $tag, array $words) {
    return preg_replace('/\b('.implode('|', $words).')\b/i', '<'.$tag.'>$1</'.$tag.'>', $text);
}

このようにして、タグの名前をパラメーターに送信することbolditalicstrikeテキストやunderline任意の単語のセットでさえも可能です( for eg$tagb<b></b>

于 2012-08-15T05:01:41.967 に答える
-1

投稿されている str_replace ソリューションを使用すると、単語が別の単語の一部として見つかったときに問題が発生します。たとえば、Sudhir の例で、$str が「これはテストステロンを使用したテストです」(申し訳ありませんが、より良い例がありません) の場合、出力は次のようになります。

これはテストオステロンによるテストです

この問題を解決するには、単語境界式があるため、正規表現を使用できます。

function bold($string, $word)
{
    return preg_replace('/\b'.$word.'\b/', '<strong>'.$word.'</strong>', $string);
}

echo bold('this is a test with testosteron', 'test');

そのルールは、単語の一部とは見なされない要素に囲まれている場合に単語と一致します

于 2012-08-15T05:10:57.767 に答える