我是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行来获取。
答案 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);