我尝试在这里和谷歌搜索,但无法找到以下解决方案:
$picUrl = '"thumbs/phpThumb.php?src=../property-photos/50/2485/068cf6589a9fb13065818efef3d1e1c0-small.jpg&w=80&h=60&far=1&bg=EEEEEE"';
$number = "2485";
$expression = "'#".$number."/(.*?)&w#'";
echo "<b>expression is </b>".$expression."<br />";
echo "<b>picUrl is </b>".$picUrl."<br />";
preg_match($expression, $picUrl, $pic); //'#2485/(.*?)&w#'
//if($pic) echo "pic is ".$pic[1]."<br />";
echo "<b>contents of pic array</b>".var_dump($pic);
如上所述,数组为空。但是,如果我替换$expression
函数中的preg_match
变量,并使用php注释后面的文本(即:'#2485/(.*?)&w#'
),我会得到所需的结果。
为什么使用$ expression变量不起作用?
答案 0 :(得分:1)
$expression
是以'
开头并以'
结尾的字符串。因此,#
成为分隔符,'#2485/(.*?)&w#'
成为正则表达式中的文字。 #
是一个以$expression = "#".$number."/(.*?)&w#";
开头和结尾的字符串,现在是正则表达式的分隔符,而不是文字。
只需使用:
$expression = '#'.$number.'/(.*?)&w#';
或(我推荐)这个:
{{1}}
答案 1 :(得分:0)
从$expression
中删除单引号:
$expression = "#".$number."/(.*?)&w#";