如何通过PHP从远程网页获取td元素中的文本

如何通过PHP从远程网页获取td元素中的文本,php,html,ajax,cross-domain,Php,Html,Ajax,Cross Domain,我设置了一个温度监视器,我想将一些数据用于其他事情(cron作业等)。来自传感器的数据可以从我们的本地网络(192.168.123.123)访问。所讨论的内容是: <td id="1E5410ECC9D90FC3-entity-0-measurement-0" class="">69.08</td> <!-- I NEED THE 69.08 --> 69.08 我不能通过ajax实现,因为我得到了允许访问源错误(CORS) 我试过这个: $url = '

我设置了一个温度监视器,我想将一些数据用于其他事情(cron作业等)。来自传感器的数据可以从我们的本地网络(192.168.123.123)访问。所讨论的内容是:

<td id="1E5410ECC9D90FC3-entity-0-measurement-0" class="">69.08</td>
<!-- I NEED THE 69.08 -->
69.08
我不能通过ajax实现,因为我得到了允许访问源错误(CORS)

我试过这个:

$url = 'http://192.168.123.123';
$content = file_get_contents($url);
$first = explode( '<div id="1E5410ECC9D90FC3-entity-0-measurement-0">' , $content );
$second = explode("</div>" , $first[0] );

echo $second[0];
$url='1!'http://192.168.123.123';
$content=file\u get\u contents($url);
$first=爆炸(“”,$content);
$second=分解(“,$first[0]);
echo$second[0];
但我明白了:

��UMS�0��+��$���94С�2����؋-�%#Ʉ�뻲���Bۓ%����ݷr��m4�yyF*_+ry���ӈP������S��|��&�ȵ�2���}��V�7ǜO��dz�[�� (�!�_2��$�/�p/ g�=B� D����<��1�#�=h���J�˨�'��I^ ��g7��=�=��^�0��ϔ����p�Q��L��I�%TF�Q�)    ������;c��o$��a����g��mWr�ܹ��;�(��bE��O�i� ��y�҉)f=�6=�,2� �#I��s����>����kNƕt/W2^��@ Xp�3^݅$ѵ��T U�ʲ�@f��db�ԁ%��b�`G|��D�{You are trying to retrieve data from 
<td id="1E5410ECC9D90FC3-entity-0-measurement-0" class="">
not
<div id="1E5410ECC9D90FC3-entity-0-measurement-0">
, so not from a
<div>
, so just change it into:

$url = 'http://192.168.123.123';
$content = file_get_contents($url);
$first = explode( '<td id="1E5410ECC9D90FC3-entity-0-measurement-0">' , $content );
$second = explode("</td>" , $first[0] );

echo $second[0];

��嗯�0��+��$���94С�2����؋-�%#Ʉ�뻲���Bۓ%����ݷr��m4�yyF*uuy+ry���ӈP������s��|��&�ȵ�2.���}��v�7ǜO��dz�[�� (�!�_2.��$�/�p/g�=B� D���� 您试图从
而不是
检索数据,因此不是从
检索数据,因此只需将其更改为:

// create curl resource
$ch = curl_init();

// set url
curl_setopt($ch, CURLOPT_URL, "http://192.168.123.123");        

//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// $output contains the output string
$output = curl_exec($ch);

// close curl resource to free up system resources
curl_close($ch);
$url='1!'http://192.168.123.123';
$content=file\u get\u contents($url);
$first=爆炸(“”,$content);
$second=分解(“,$first[0]);
echo$second[0];
还是我疯了?

第一步:

我建议使用php的curl库来管理和配置web请求/响应。 使用此机制可以更好地管理/控制编码、压缩和加密

步骤2:

让我们从web服务器返回的响应字符串中提取细节。我建议使用PHP的PCRE函数preg_match来提取所需的数据

//正在查找69.08

$pattern='/id=“1E5410ECC9D90FC3-entity-0-measurement-0”。*>([\d]{1,2}?\[\d]{1,2})检查页面编码和PHP编码。在分解
echo$content=file\u get\u contents($url)之前,首先检查内容
否则,有一个库phpQuery可以使用jquery之类的选择器来解析HTML。@Rohit.007如果我这样做,它仍然会在我问题的底部显示乱七八糟的内容。很抱歉。你是对的。不过,我仍然会在我的问题中看到上面所示的乱七八糟的内容。不用担心,也许这可能是一个解决方案:也尝试过。得到PHP警告:DOMDocument::loadHTML():实体中CDATA 0x8中的无效字符,第1行:这可能是因为您试图从中获取内容的文件的doctype声明丢失/无效。我发现这个临时监视器系统有一个API,我可以通过JSON访问所有内容。我现在将研究如何执行此操作,但我将保留此声明,以防其他人决定回答等等e需要知道如何按照最初要求的方式来做。
// Looking for <td id="1E5410ECC9D90FC3-entity-0-measurement-0" class="">69.08</td>
$pattern = '/id="1E5410ECC9D90FC3-entity-0-measurement-0".*>([\d]{1,2}?\.[\d]{1,2})<\//';

// run the regex match and collect the hit
preg_match($pattern, $output, $matches);

// print_r of the array
/*
Array
(
    [0] => id="1E5410ECC9D90FC3-entity-0-measurement-0" class="">69.08</
    [1] => 69.08
)
*/

// Print out the result to check
echo $matches[1];