2016-08-05 12 views
1

私はrobots.txtを解析しています。PHPの文字列をPHP Regexに変換するには

Disallow: /?hl=*&*$ 

str_replace文字列を変換します。

$my_regex = str_replace(array("?", "*", "/"), array("\?", "(.*)", "\/"), "/?hl=*&*$"); 
echo $my_regex; 

とは

/?hl=*&*$ 

を引き起こすと私は、この問題の解決策を見つけること

\/\?hl=(.*)&(.*)$ 

なりたいです。 pls help me私は

答えて

1

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=*&*$"); 
関連する問題