1

たとえば、「こんにちは、おはようございます」と入力すると、「こんにちは」と「さようなら」だけが強調表示されるようにしたいと思います。どうすればこれを行うことができますか?

現時点では、線全体が黄色で強調表示されているため、これは私が望んでいることではありません。

これが私のコードです:

<?php
$words = $_POST['words'];
$words = preg_replace('/\bHello\b/i', 'Bonjour', $words);
$words = preg_replace('/\bbye\b/i', 'aurevoir', $words);
echo '<FONT style="BACKGROUND-COLOR: yellow">'.$words.'</font>';
?>
4

4 に答える 4

2
<style type="text/css">
.highlight {
   background: yellow;
}
</style>
<?php
$words = $_POST['words'];
$words = str_ireplace('Hello', '<span class="highlight">Bonjour</span>', $words);
$words = str_ireplace('bye', '<span class="highlight">aurevoir</span>', $words);
echo $words;
?>
于 2013-02-14T12:27:46.183 に答える
1

次のようなものを試してください。

<?php
$words = $_POST['words'];
$words = str_replace("hello", "<span class=\"highlight\">hello</span>", $words);
$wirds = str_replace("bye", "<span class=\"highlight\">bye</span>", $words);

print($words);

?>

// CSS FILE
.highlight {
    background-color: yellow;
}

これにより、出力の「hello」と「bye」の周りに黄色の背景色が表示されます。

于 2013-02-14T12:28:48.133 に答える
1

あなたの問題

最後の行、つまり結果をエコーし​​ている行は、文全体を強調表示のコンテキスト(<font>タグ)でラップするため、間違っています。

解決

  1. 元の文を解析する必要があります;
  2. キーワードを強調表示のコンテキストでラップします。

preg_replace()これは関数で行うことができます。また、コンテキストでの関連性を示すことを目的とする<mark>タグの使用をお勧めします。

コード

<?php 
$original_sentence = $_POST['words'];
$highlight_sentence = $original_sentence; 
$word_to_highlight = array('Hello', 'Bye'); // list of words to highlight

foreach ($word_to_highlight as $word) {
  $pattern = printf('/\b%s\b/i', $word); // match a different word at each step
  $replace_by = printf('<mark>%s</mark>', $word); // replacement is updated at each step
  $highlight_sentence = preg_replace($pattern, $replace_by, $words);
}
?>

<style type="text/css">
mark {
   background: #ffc;
}
</style>
于 2013-02-14T12:37:46.430 に答える
0

はい、このアプローチはもっともらしいですが、fonthtmlタグは廃止されspanました。代わりに使用してください。

于 2013-02-14T12:26:58.303 に答える