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 回答