正規表現 バックスラッシュ

preg_match() バックスラッシュ

正規表現関数(Perl 互換) - パターン構文

注意: シングルクォートあるいはダブルクォートで囲まれた PHP の 文字列 の中では、
バックスラッシュは特別な意味を表します。 そのため、正規表現 \\ を使用して \ と
マッチさせたい場合は PHP のコード内では "\\\\" あるいは '\\\\' と記述する必要が
あります。

  • 以下のように、$strにはバックスラッシュ一つが代入されている。それとマッチするためには2つのバックスラッシュとマッチする必要があるということ
<?php
$str = '\\';
$match = '\\\\';
$rs1 = preg_match("/".$match."/", $str, $rs2);

p($rs1);
p($rs2);


function p($o){
	print "<pre>";
	print_r($o);
	print "</pre>";
}
?>
<?php
$str = '"hoge\\\\\'\"moge"\'uhouho\'';
$match = '(?:"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\')';
$rs1 = preg_match_all("/".$match."/", $str, $rs2);
p($str);
p($rs1);
p($rs2);


function p($o){
	print "<pre>";
	print_r($o);
	print "</pre>";
}
?>
<?php
$str = '\100';
$match = "(\\\\)(\d+)";

$rs1 = preg_match("/".$match."/", $str, $rs2);
print "文字列は ";
p($str);
print"返り値は ";
p($rs1);
print "結果配列は ";
p($rs2);


function p($o){
	print_r($o);
	print "<br>";
}
?>
<?php
$str = '{$_str}';
$match = "\\{\\$.+\\}";

$rs1 = preg_match("/".$match."/", $str, $rs2);
print "文字列は ";
p($str);
print"返り値は ";
p($rs1);
print "結果配列は ";
p($rs2);


function p($o){
	print_r($o);
	print "<br>";
}
?>