2013-07-23 45 views
-5
<td class=bilgi_satir width="45%"><b>(PLACE I WANT TO FETCH) </b></td> 

(OTHER HTML TAGS) 

<td class=bilgi_satir width="25%"><b>(PLACE I WANT TO FETCH) </b></td> 

(OTHER HTML TAGS) 

<td class=bilgi_satir width="35%"><b>(PLACE I WANT TO FETCH) </b></td> 

(OTHER HTML TAGS) 

我如何获取他们的数组?Php Preg Match,我该怎么做

宽度可变正在改变......

+0

使用HTML解析器。 – nickb

+0

@nick我真的在PHP中noob,你可以发送一个例子吗? – 1342

+0

**不要使用正则表达式来解析HTML **。你不能用正则表达式可靠地解析HTML,你将面临悲伤和挫折。只要HTML从你的期望改变,你的代码就会被破坏。有关如何使用已经编写,测试和调试的PHP模块正确解析HTML的示例,请参阅http://htmlparsing.com/php。 –

回答

1

尝试用正则表达式来解决的问题,HTML,很快你有两个问题。 但是,如果你真的想用一个肮脏的正则表达式来做到这一点,就可以做到。你不应该依赖它。最简单的正则表达式是这样的:

preg_match_all(
    "/<td class=bilgi_satir width=\"..%\"><b>(.*)<\/b>/i", 
    $your_html_here, $m 
); 

这大致返回你想要print_r($m[1]);什么(我加了1,2,3告诉他们分开)

Array (
    [0] => (PLACE I WANT TO FETCH 1) 
    [1] => (PLACE I WANT TO FETCH 2) 
    [2] => (PLACE I WANT TO FETCH 3) 
) 

这样做是最好的方法DOM解析。例如:

$doc = new DOMDocument(); 
$doc->loadHTML($your_html_here); 
$x = new DOMXPath($doc); 
$results = $x->query("//td[@class='bilgi_satir']//b"); 

# $results->length now shows 3 

$ret = array(); 
foreach($results as $count => $result) { 
    printf("item # %s = %s\n", $count, $result->nodeValue); # debug only 
    $ret[] = $result->nodeValue; 
} 

这将显示:

item # 0 = (PLACE I WANT TO FETCH 1) 
item # 1 = (PLACE I WANT TO FETCH 2) 
item # 2 = (PLACE I WANT TO FETCH 3) 

编辑:明明倾销节点值到一个数组,您可以通过访问数组,你想要的。

+0

你是我的英雄。我真的很喜欢第二个例子。真的感谢 ... – 1342