我正试图从网站上删除cetrain值:http://www.gitanjalijewels.com/
我使用以下代码:
<?php
$data = file_get_contents('http://www.gitanjalijewels.com/category.php?id=39');
$regex = '/GOLD RATES:: (.+?) ,/';
preg_match($regex,$data,$match);
var_dump($match);
echo $match[1];
&GT;
然而,我得到的结果是:
array(0){}
无法确定可能出现的问题?任何人都可以指导我朝着正确的方向前进吗?
答案 0 :(得分:2)
不要使用正则表达式来解析HTML。使用DOM解析器。
include('simple_html_dom.php');
$html = file_get_html('http://www.gitanjalijewels.com/');
foreach($html->find('/html/body/div[1]/div/table/tbody/tr[3]/td/li/marquee/') as $element)
{
echo $element->plaintext . '<br>';
}
输出:
GOLD RATES::(24kt999:--Rs.2868), (24kt995:--Rs.2841), (22kt:--Rs.2675), (18kt:--Rs.2236)
答案 1 :(得分:1)
$regex = '/GOLD RATES::[\s]?(.+?)[\s]?,/si';
preg_match($regex,$data,$match);
var_dump($match);
输出:
array(2) {
[0] =>
string(32) "GOLD RATES::(24kt999:--Rs.2868),"
[1] =>
string(19) "(24kt999:--Rs.2868)"
}
答案 2 :(得分:1)
$html = file_get_contents("http://www.gitanjalijewels.com/category.php?id=39");
$matches = array();
preg_match("/GOLD RATES::[^\>]+/", $html, $matches);
print("<pre>");
var_dump($matches);
print("</pre>");
if( count($matches) > 0 ){
$html = $matches[0];
$matches = array();
preg_match_all("/\(([^:]+)\:([^\)]+)\)/", $html, $matches);
$goldPrice = array();
if( count($matches) > 0){
for($i = 0; $i<count($matches[1]); $i++)
$goldPrice[ $matches[1][$i] ] = $matches[2][$i];
}
print("<pre>");
var_dump($goldPrice);
print("</pre>");
}
result:
array(4) {
["24kt999"]=>
string(9) "--Rs.2868"
["24kt995"]=>
string(9) "--Rs.2841"
["22kt"]=>
string(9) "--Rs.2675"
["18kt"]=>
string(9) "--Rs.2236"
}