2012-02-05 2 views
0

可能性の重複HTMLの段落を操作:ここで
Highlight keywords in a paragraphはPHPで

をあなたのために別の質問です。私はPHPで小さな問題を抱えています。私は自分自身で特別な解決法を見つける前に、問題を解決するためのより簡単で迅速な方法を考えました。

ように私は、HTMLの段落タグを含む文字列を持っていると仮定すると:私は今、やりたい

$array=("Hello","nick", "help", "anyone", "solution") 

$string="<p>Hello this is nick</p> 
     <p>i need some help over here</p> 
     <p></p><p>Does anyone know a solution</p>" 

そして、いくつかの「手がかり」の単語が含まれて刺されの配列以下: $stringをブラウザに出力しますが、「手がかり」の単語は特別な形式を持つ必要があります。太字または強調表示されています。

これは少し難しいと感じるのは、段落をそのまま残したいということです。言い換えれば、私は私が<p></p>タグを削除してから返された文字列を分割するstrip_tagsを使うと考えていた最終出力を正確に(新しい行/新しい段落を含む)、元が、いくつかの言葉を大胆

として見てみたいですスペース。単語の配列を取得するように。それから私は、その単語が$arrayに含まれているかどうかをチェックすることによって、個々の単語を個別に出力します。 「はい」の場合は、太字で出力されます。

このようにして、私は新しい段落の概念を明確に失い、すべての段落が単一の段落にマージされます。

これを簡単に修正できますか?例えば、知識を有する方法、例えば、 "Hello"という単語が新しい段落で始まりますか?それとも他に何かできますか?

+0

この質問は、-1の値を持っていました。 – Teekin

答えて

0

あなたの手がかりを直接置き換えるのはなぜですか?

$string = str_ireplace(array('hello', 'nick'), array('<strong>hello</strong>', '<strong>nick</strong>'), $string); 

+0

@ Lepidosteus私はこのように$文字列を単語に分割しなければならず、段落という概念は存在しないと思います。私が間違っている場合は私を修正してください –

+0

いいえ、Lepidosteusのコードは動作するはずです - ちょうど試してみてください:) – Daan

0

使用str_replaceを(もちろん関数に渡された二番目の配列は、事前に生成される)と

+0

ちょっとあなたの答えのためのstrattonありがとう。どのように私はそれを行うことができます私はかなり理解していないため、例を挙げることで、より正確にすることはできますか? –

+0

@ Lepidosteusの答え – clem

2

ちょうど自分自身のフォーマットされたバージョンで単語を置き換えるそれらの周り太字タグで単語を置き換えます。下の正規表現は大文字小文字を維持し、完全な単語のみを置き換えます(たとえば、「snicker」という単語では、その中の「nick」という単語は置き換えられません)。私は彼/彼女はそれを持っていたものの問題を説明することを怠っ質問とダウン有権者に何かを見ることができないので、私はそれをアップ投票して

preg_replace('/\b('.implode('|', $array).')\b/i', '<em>$1</em>', $string); 
+0

@ Juhanaあなたの答えをありがとうを見ている。私は本当にその正規表現が意味するものは理解していないが、私はGoogleを使用してそれを見つけることを試みる:)私はちょうど確認する必要がある、関数の最初のパラメータは私で終わる?そしてもしそうなら、それは私が何を意味するのでしょうか? また、2番目のパラメータの$ 1(変数の場合)はどのような変数ですか? –

+0

'i'は大文字と小文字を区別しないので、" hello "、" Hello "、" HELLO "などのすべての亜種を置き換えます。 '$ 1'は変数ではなく、見つかったマッチを表します(" hello "が見つかった場合、$ 1は" hello "の略です)。 – JJJ