PHP - 带for for循环$ i的preg_match

时间:2012-04-22 06:10:38

标签: php preg-match

我是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行来获取。

3 个答案:

答案 0 :(得分:1)

无需循环播放。

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

您还可以使用稍微复杂的正则表达式来限制数字范围,但我觉得这足以满足您的需求。

答案 1 :(得分:0)

以这种方式尝试:

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

答案 2 :(得分:-1)

您甚至没有正确关闭引号。您在开头使用单引号',并使用双引号"结束。 你想要的是:

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