-1

可能重复:
如何使用 PHP 解析和处理 HTML?

我正在用不同产品的演示文稿构建我的网站,我在使用 curl 时遇到了一些问题,基本上我需要做的是从不同的网站获取 html 的某些部分并显示在我的网站上,例如:标题、型号、描述、用户评论等....我设法完成了一些代码,但是在更改源网址时停止工作...即使源代码与我的代码相同:

$url = "http://www.tigerdirect.com/applications/SearchTools/item-details.asp?EdpNo=2819129&CatId=4938";

//$url = "http://www.tigerdirect.com/applications/SearchTools/item-details.asp?EdpNo=1808177&csid=_61"; //this one is not working....

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);

$source = curl_exec ($ch);

$start_description1 = "</tr>
</tbody>
</table>




<p>";
$end_description1 = "</div>
</div>
<div id=\"Videos\" style=\"display:inline;\">";
$description1_start_pos = strpos($source, $start_description1) + strlen($start_description1);
$description1_end_pos = strpos($source, $end_description1) - $description1_start_pos;
$description1 = substr($source, $description1_start_pos, $description1_end_pos);
echo $description1;

它完美无缺,但如果我更改网址,它将无法正常工作......问题是 start_description html 代码......在其他页面上,html 代码不同......

代替:

</tr>
</tbody>
</table>




<p>

新页面有:

</tr>
</tbody>
</table>


<p>

或者:

</tr>
</tbody>
</table>

<p>

我怎样才能避免这个错误?或者如何避免 cUrl 错误,并检索我想要的内容?

谢谢你!

4

1 回答 1

1

而不是使用strpos,您应该解析 html 并从 html 中获取描述。

对于这个应用程序,我推荐使用PHP Simple HTML DOM Parser

这是它如何工作的示例:

$html = file_get_html('http://www.tigerdirect.com/applications/SearchTools/item-details.asp?EdpNo=1808177&csid=_61');
//fetches html content from the url
$p = $html->find('p', 0);
//fetches the content of the first <p> element.

echo $p-> plaintext;

希望这可以帮助。

于 2012-08-04T18:16:08.887 回答