1

ここと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);

上記のように、配列は空です。ただし、関数内の$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 に答える