文件cache.txt内容:<span>a1:</span>efg<span>b1:</span>ijk<span>c1:</span>xyz<br />
<span>a2:</span>efkjkg<span>c2:</span>ijk<br />
<span>a3:</span>wtrrt<span>b3:</span>ijk<br />
<span>c4:</span>ijk<br />
求正则,将里面的8条数据全部提取出来.
我的代码是 $handle=fopen('cache.txt','r');
for($line=fgets($handle);!feof($handle);$line=fgets($handle))
{
if(preg_match('/<span>([^:]+)\:<\/span>([^<]+)/',$line,$out))
{
echo(',"'.$out[1].'":"'.$out[2].'"');
}
}
fclose($handle);只提取到每一行的第一条数据,
求会全局匹配的帮忙给个表达式!
<span>a2:</span>efkjkg<span>c2:</span>ijk<br />
<span>a3:</span>wtrrt<span>b3:</span>ijk<br />
<span>c4:</span>ijk<br />
求正则,将里面的8条数据全部提取出来.
我的代码是 $handle=fopen('cache.txt','r');
for($line=fgets($handle);!feof($handle);$line=fgets($handle))
{
if(preg_match('/<span>([^:]+)\:<\/span>([^<]+)/',$line,$out))
{
echo(',"'.$out[1].'":"'.$out[2].'"');
}
}
fclose($handle);只提取到每一行的第一条数据,
求会全局匹配的帮忙给个表达式!
<span>a1:</span>efg<span>b1:</span>ijk<span>c1:</span>xyz<br />
<span>a2:</span>efkjkg<span>c2:</span>ijk<br />
<span>a3:</span>wtrrt<span>b3:</span>ijk<br />
<span>c4:</span>ijk<br />
TEXT;preg_match_all('#<(span).*>(.+)</\\1>#isU', $s, $r);
print_r($r[2]);Array
(
[0] => a1:
[1] => b1:
[2] => c1:
[3] => a2:
[4] => c2:
[5] => a3:
[6] => b3:
[7] => c4:
)
$pattern = "<span>a1:</span>efg<span>b1:</span>ijk<span>c1:</span>xyz<br />";
if(preg_match_all('/<span>([^:]+)\:<\/span>([^<]+)/',$pattern,$out))
{
var_dump($out);
}
-|A-----------------B-----------------C
1|efg---------------ijk----------------xyz
2|efkjkg-------------------------------ijk
3|wtrrt-------------ijk-------------------
4|-------------------------------------ijk
而且实际文件可能很大,
要转JSON.
已经完美转换成JSON数据了.
现给出代码,供来者参考:$line = "<span>a1:</span>efg<span>b1:</span>ijk<span>c1:</span>xyz<br />";
//$line = "<span>a1:</span>efg<br />";
if(preg_match_all('/<span>([^:]+)\:<\/span>([^<]+)/',$line,$out))
{
// var_dump($out);
$count=count($out[1]);
echo('{');
for ($i = 0; $i <$count; $i++)
{
echo(',"'.$out[1][$i].'":"'.$out[2][$i].'"');
}
echo('}');
}