私の現在のパターンはこれです:彼らは$ 1、$ 2、$ 3であるが、私はいくつかの更なる柔軟性を許可するように三つの部分を交換しなければならないPHP正規表現はかっこを使用せずに1つの単語に一致しますか?
preg_replace($pattern, '$1*$2*$3', $result);
:
pattern=("/(.*)(\bIf you want\b)(.*)/iu");
しかし、と
:だから私は単にこれを行うことができますIf you want
If I want
:私は、たとえばこれらの行の両方を検出することができます
pattern=("/(.*)(\bIf (I|you) want\b)(.*)/iu");
しかし、$ 1、$ 2、$ 3を置き換える必要があるため、問題が発生します。しかし、他のパターンがあることも、単に「何が次に起こった」|「したい場合(私はあなたが)」
$pattern = "/(.*)(\b".$value."\b)(.*)/iu";
は$値は時々、上記の例のように修飾子を持っている:パターンを動的に挿入され、したがって、すべて異なっているされています修飾子なし。余分な角括弧は問題を引き起こしますが、私はそれを行う別の方法を見つけることができません。
EDIT:ここでの問題は$ 1、$ 2、$ 3のpreg_replaceです。
"/(.*)(\bwhat happened next\b)(.*)/iu"
のようなパターンでは、これは罰金を通過するが、
"/(.*)(\bIf (I|you) want\b)(.*)/iu"
とのような追加のブラケットでそれは$ 1、$ 2、$ 3にpreg_replaceで適切に代わるものではありません。
また、私はそれがこの
If you want|If I want
しかし、その特に説得力のないように行うことができます実現します!
あなたは '$ value'にユーザ定義パターンを含めることができますか? \ {\ f2}(。*)/ iu "' –
あなたが何を意味するのかよく分かりません。この問題はpreg_replaceにあり、$ 1、$ 2、$ 3の3つの括弧で囲まれたクエリが置き換えられます。 *別のブラケットを追加すると、明らかに正しく動作しません。だからこそブラケットを使わずにこのことを行う必要があるのです。そうでなければ何か別の方法が必要です。 – Hasen
文字列の先頭から部分文字列を取得し、その後に一致文字列を取得し、その後に文字列を取得したいとしますか?あなたは文字列に1つのマッチを期待していますか? –