你的示例只能得到这样的结果
Array
(
[0] => Array
(
[0] => a.gif'
) [1] => Array
(
[0] =>
) [2] => Array
(
[0] => a.gif'
))
由于a.gif'开始处并无“'”所以f后面的“'”是做为字符匹配的只有当
$str = "'a.gif' ";
才会得到
Array
(
[0] => Array
(
[0] => 'a.gif'
) [1] => Array
(
[0] => '
) [2] => Array
(
[0] => a.gif
))
这样的结果当然由于输入串的不同,得到的都是正确的结果你需要正确的理会
/(['\"]?)(.+)\\1/
的含义在html中图片名可以用单引号括起、可以用双引号括起、也可以不用引号括起
这就是 ['\"]? 而不是 ['\"] 的原因
当“'”和“"”做为引号而不是字符出现时,他们必须成对出现
这就是前面是(['\"]?)后面是\\1的原因注意
['\"]?是可以匹配空字符的,所以在某些php版本中引号并不单独被匹配
Array
(
[0] => Array
(
[0] => a.gif'
) [1] => Array
(
[0] =>
) [2] => Array
(
[0] => a.gif'
))
由于a.gif'开始处并无“'”所以f后面的“'”是做为字符匹配的只有当
$str = "'a.gif' ";
才会得到
Array
(
[0] => Array
(
[0] => 'a.gif'
) [1] => Array
(
[0] => '
) [2] => Array
(
[0] => a.gif
))
这样的结果当然由于输入串的不同,得到的都是正确的结果你需要正确的理会
/(['\"]?)(.+)\\1/
的含义在html中图片名可以用单引号括起、可以用双引号括起、也可以不用引号括起
这就是 ['\"]? 而不是 ['\"] 的原因
当“'”和“"”做为引号而不是字符出现时,他们必须成对出现
这就是前面是(['\"]?)后面是\\1的原因注意
['\"]?是可以匹配空字符的,所以在某些php版本中引号并不单独被匹配
<?
$str = "'a.gif' ";
preg_match_all("/(['\"]?)(.+)\\1 /isU", $str, $arr);
print_r($arr);得到的还是
Array
(
[0] => Array
(
[0] => 'a.gif'
) [1] => Array
(
[0] =>
) [2] => Array
(
[0] => 'a.gif'
))难道这是因为php版本的问题吗?