2012-04-22 24 views
0

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

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行まで書きたいとは思わない。

+1

変数を正規表現のパターンの中に入れることはできません。 – Jack

+0

ええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ投稿日時: – hackartist

+0

あなたは数字を調べることができます: '\ d {1,3}' – hjpotter92

答えて

1

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

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

ありがとうdtbarne!私のばかげた見落としには申し訳ありません。 :) –

-1

引用符を正しく閉じることさえできませんでした。最初に一重引用符'を使用していて、二重引用符「"」で終わります。何をしたい は次のとおりです。

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

はこのようにそれを試してみてください。

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

さらに複雑な正規表現を使って数の範囲を限定することもできますが、これはあなたのニーズに十分だと感じています。