2012-07-05 56 views
0

我想解析有一些像這樣的HTML內容:的Preg的模式尋找

<td class="s3_40">12,909</td> 

我試過很多的正則表達式來查找之間(12909) 字符串,如:%<td class=\"s3_40\">(.*)</td>% 但我沒有發現, 。

+0

有人會告訴你... – xdazz

+4

你應該停止嘗試使用正則表達式,這和使用[XHTML解析器(http://php.net/manual/en/book.dom.php) 。正則表達式不是解析HTML的好工具。 – meagar

+1

儘管如此,正則表達式可以在一定程度上用於提取內容。 – nhahtdh

回答

0

希望這可以幫助:

$str = '<td class="s3_40">12,909</td>'; 
if (preg_match('#<td class="s3_40">(.*)</td>#s', $str, $matches)) { 
    var_dump($matches[1]); 
} 
+0

我通過[regexTester](http://www.pagecolumn.com/tool/pregtest.htm)進行了測試,但我沒有收到任何數據 – Ali

+0

我在另一個[Regex Tester](http://www.spaweditor。 com/scripts/regex/index.php)它的作品,我不知道爲什麼[regexTester](http://www.pagecolumn.com/tool/pregtest.htm)不工作,也許它是由分號引起的:$ ptn =「/ <; td class =」s3_40「>;(。*)<;/td>; /」; –

0

如果你必須使用正則表達式做。你可以嘗試的模式是這樣的:

/<td[^>]*>(.*?)<\/td>/ 
0

試試這個

#(?<=(s3_40">))([^<]+)(?=(</td>))# 
0

嘗試做這樣的,只是不斷加入到s3_41,s3_42,等你需要的類。

<?php 
$s = '<td class="s3_40">12,909</td>'; 
$pat = '@<td class=".*(s3_40|s3_41).*".*?>(.*?)</td>@isU'; 
preg_match_all($pat,$s,$ms); 
var_dump($ms); 
+0

輸出將如下所示:http://i.imgur.com/kZL3x.png – fedmich