2010-07-29 70 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; 
} 

進一步閱讀: