0

1 つの単語またはフレーズを作成する複数の単語によって形成される値を持つ配列があります。この配列の各値には、html タグを含めることもできます。html タグで始まらないものだけを一致させ、配列内の単語を置き換えたいと考えています。

「どのように」を探しています。

"how it's made" 

になる

"<b>how</b> it's made"

その間

<span style="somethig:value">how it's made</span>

そのままにしておく必要があります。

私はこれを試しました

$words_result = preg_replace('/^(?!<span).*('.$word.')/', '<b>$1</b>', $words_result);  

しかし、私は常にミックスの結果を取得し、それをデバッグすることを知りません。さらに、正規表現を扱うとき、私はいつも問題を抱えていました:D たとえば、式が一致した場合、対応する $NI は何を使用する必要がありますか?

ありがとうございました

4

2 に答える 2

1

ドルの数字は、追加した括弧を表します。$1 は正規表現内の最初のブラケットでキャプチャされたものであり、$2 は 2 番目のブラケットに一致したものなどです。多くの正規表現エンジンでは、$0 には一致全体が含まれます。したがって、この場合、最初の単語が $1 に格納されていることがわかります。

変数にはどのような値があります$wordか? $wordwith\w+.*with を置き換えるとうまくいく.*?かもしれません。疑問符は、用語全体が一致するようにピリオドができるだけ少ないシンボルを取得するようにするために必要です (詳細については、この正規表現リファレンスを見て、と比較*してください*?) 。

編集:あなたのコメントに基づいて、実際の問題は、正規表現が行の先頭から単語までのすべてに一致し、これらすべてをに置き換えることです<b>(word)</b>。試してみることができるのは、.*角かっこ:(.*)に入れることです。これで、次のようになります:単語まで$1のすべてを含み、単語自体を含みます。次に、置換文字列を作成します。$2'$1<b>$2</b>'

于 2012-04-06T00:11:59.510 に答える