簡體   English   中英

preg_match模式變量的用法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM