[英]preg_match pattern variable usage
我嘗試在這里和Google進行搜索,但找不到以下解決方案:
$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);
如上所述,該數組為空。 但是,如果我將preg_match
函數中的$expression
變量替換為php注釋后的文本(即: '#2485/(.*?)&w#'
), '#2485/(.*?)&w#'
得到所需的結果。
為什么使用$ expression變量無效?
$expression
是一個以'
開頭和結尾的字符串。 因此, '
成為分隔符,而#
成為正則表達式中的文字。 '#2485/(.*?)&w#'
是一個以#
開頭和結尾的字符串,現在它是正則表達式的分隔符,而不是文字。
只需使用以下任一方法:
$expression = "#".$number."/(.*?)&w#";
或者(我建議):
$expression = '#'.$number.'/(.*?)&w#';
從$expression
刪除單引號:
$expression = "#".$number."/(.*?)&w#";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.