PHP 5.1.1から二重引用符で囲まれた文字列リテラルのバックスラッシュも表示されるはずなので、新しいバージョンのPHP(source)でもうまく動作するはずです。また
、バックスラッシュはエスケープシーケンス(あるいは'\\?'
と'\\/'
)のリテラルではなく一部として扱われていたように'\?'
と'\/'
と単一引用符で囲まれた文字列リテラルを使用することを検討してください:
$my_regex = str_replace(array("?", "*", "/"), array('\?', "(.*)", '\/'), "/?hl=*&*$");
// $my_regex = str_replace(array("?", "*", "/"), array('\\?', "(.*)", '\\/'), "/?hl=*&*$");
echo $my_regex;
を参照してください。
シンプル:PHP demo
はthis PHP single-quoted string literal referenceを参照してください。文字列を指定するには、一重引用符で囲みます(文字は'
)。
リテラルの一重引用符を指定するには、バックスラッシュ(\
)でエスケープします。 リテラルのバックスラッシュを指定するには、それをダブル(\\
)とします。 バックスラッシュの他のすべてのインスタンスは、リテラルのバックスラッシュとして扱われます:これは、使用するかもしれない他のエスケープシーケンス(例えば、\r
または\n
)が、特別な意味を持つのではなく、エルス
、あなたはリテラルdoubel引用符で囲まれた文字列(demo)内に二重のバックスラッシュを使用することができます。
$my_regex = str_replace(array("?", "*", "/"), array("\\?", "(.*)", "\\/"), "/?hl=*&*$");