1

我尝试在这里和谷歌搜索,但找不到以下解决方案:

$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 变量不起作用?

4

2 回答 2

1

$expression是一个以 开头和结尾的字符串'。因此,'成为分隔符,并#成为您的正则表达式中的文字。'#2485/(.*?)&w#'是一个开始和结束的字符串#,现在是正则表达式的分隔符,而不是文字。

只需使用以下任一:

$expression = "#".$number."/(.*?)&w#";

或(我推荐)这个:

$expression = '#'.$number.'/(.*?)&w#';
于 2012-10-20T12:57:52.330 回答
0

$expression从您的:中删除单引号

$expression = "#".$number."/(.*?)&w#";
于 2012-10-20T12:57:28.740 回答