正規表現を使用して文字列内のキーワードを検索しています。スラッシュが含まれているキーワード「time/emit」を除いて、すべてのキーワードで正常に機能します。
エスケープするpreg_quote($find,'/')
を使用しても、次のメッセージが表示されます。
Unknown modifier 't' in /frontend.functions.php on line 71
検索パターンを印刷すると、/time\\/emit/
と表示されます。 preg_quoteがないと、/time/emit/
が表示され、どちらも同じエラーメッセージを返します。
少しでも知識があれば役に立ちます。
/とは異なる記号で正規表現を開始および終了してみてください
私は個人的に `を使用します
#を使っている人を見たことがあります
ほとんどの文字は良いと思います。あなたはここでそれについてもっと読むことができます: http://pl.php.net/manual/en/regexp.reference.delimiters.php
このような:
preg_match('#time/emit#', $subject); // instead of /time/emit/
別の言い方をすれば、あなたの$find
変数には、/ time/emit /ではなく#time/Emit#を含める必要があります
あなたはすでにそれを逃れている何かを持っているように見えます。
preg_quote('time/emit') // returns time\/emit
preg_quote('time\/emit') // returns time\\/emit
ハックとしてあなたは簡単に行うことができます:
preg_quote(stripslashes($find)) // will return time\/emit
これはうまくいくはずです:
$a="Hello////////";
$b=str_replace($a,"//","/");
echo $b;
コードのビット?
その特定の用語の「正規表現」は「/ time/emit /」のようになります。キーワードのセットを使用すると、より効率的な方法がある可能性があるため、何をしているかを確認することをお勧めします。