0

私はPhpを初めてpreg_match使用し、ローカルHTMLファイルからデータを取得するためにを実行したいと考えています。私が以下のように書いたコード:

preg_match('#\<span class=\"creativeT\" id=\"SCreativeDesc1\">(.*?)\<\/span>#',$html,$creativedesc);

特定のSCreativeDesc"1"の場合は正常に機能しますが、$ i(つまり、SCreativeDesc $ i)を使用してループに入れると、エラーが発生します。

for ($i=1;$i<=$totalCreatives;$i++){
    preg_match('#\<span class=\"creativeT\" id=\"SCreativeDesc$i\">(.*?)\<\/span>#',$html,$creativedesc);
}

私が置くか:

for ($i=1;$i<=$totalCreatives;$i++){
    preg_match('#\<span class=\"creativeT\" id=\"SCreativeDesc" . $i . "\">(.*?)\<\/span>#',$html,$creativedesc);
}

それも機能しません、ループでそれを行う方法はありますか?HTMLの場合と同様に、約100回繰り返されるので、このグラブのために最大100行まで書きたくありません。

4

3 に答える 3

1

ここでループする必要はありません。

preg_match('#\<span class=\"creativeT\" id=\"SCreativeDesc[0-9]+\">(.*?)\<\/span>#',$html,$creativedesc);

少し複雑な正規表現で数の範囲を制限することもできますが、これで十分だと思います。

于 2012-04-22T06:34:39.940 に答える
0

この方法で試してください:

for ($i=1;$i<=$totalCreatives;$i++){
  $re = "#\<span class=\"creativeT\" id=\"SCreativeDesc" . $i . "\">(.*?)\<\/span>#";
  preg_match($re,$html,$creativedesc);
}
于 2012-04-22T06:19:28.890 に答える
-1

引用符を正しく閉じていませんでした。最初に一重引用符を使用'し、二重引用符で閉じています"。あなたが欲しいものは:

preg_match('#\<span class=\"creativeT\" id=\"SCreativeDesc' . $i . '\">(.*?)\<\/span>#',$html,$creativedesc);
于 2012-04-22T06:18:12.167 に答える