2010-07-29 104 views
0

观看的计算器一些答案后,正则表达式PHP删除某些关键字

preg_match_all('/<img[^>]+>/i',$html, $result); 
$img = array(); 
foreach($result[0] as $img_tag) 
{ 
    preg_match_all('/(title)=("[^"]*")/i',$img_tag, $img[$img_tag]); 
} 

//print_r($img); 
foreach ($img as $imgg) 
echo $imgg[2][0]; 

上面的代码发现IMG冠军,但但它返回的"Waterfall fountain"代替Waterfall fountain,公告不存在"

我应该怎么添加正则表达式来删除"

谢谢

+2

显然不够答案......被摄体殴打细灰。 PHP有一个HTML解析器,它比正则表达式更好。 – Kobi 2010-07-29 14:17:59

回答

1

举动引号的括号

preg_match_all('/(title)="([^"]*)"/i',$img_tag, $img[$img_tag]); 
3

的城外移动"出捕获组:

'/(title)="([^"]*)"/i' 
+0

如果你正在处理的遗留代码不包围带引号的属性,使用这个:''/(标题)=“?([^”] *)“?/ i''它也适用于引用的值不包含空格 – HalfBrian 2010-07-29 14:48:45

0

目前你正在的的"部分匹配,记得。你可以把报价括号外:

preg_match_all('/(title)="([^"]*)"/i',$img_tag, $img[$img_tag]); 
0

括号正则表达式进行捕获组,该控制什么获取存储在$img[$img_tag]。你的小组包括引号:("[^"]*")。如果您不想要报价,只需将它们移到组外:"([^"]*)"

1

将括号内的引号移出。

检查:

preg_match_all('/(title)="([^"]*)"/i',$img_tag, $img[$img_tag]); 
1

使用XML解析器,这XPath来获得IMG元素的所有标题:

//img/@title 

例与DOM

$dom = new DOMDocument; 
$dom->loadHML($html); 
$xp = new DOMXPath($dom); 
foreach($xp->query('//img/@title') as $attribute) { 
    echo $attribute->nodeValue; 
} 

进一步阅读: