查找字符串并将其值保存在字符串中

Posted

技术标签:

【中文标题】查找字符串并将其值保存在字符串中【英文标题】:Finding string and saving its value in string 【发布时间】:2014-08-26 13:19:29 【问题描述】:

我想通过 URL 查找有关 eBay 中事物的信息。

我试过了,但它不起作用:

<?php
$web = file_get_contents('http://www.ebay.com/itm/7-inch-android-4-2-A13-Capacitive-Touch-Screen-WiFi-Tablet-PC-Front-Camera-8GB/361031774590');
$title = preg_replace('~(.*)<span class="g-hdn">(.*)</span>~','',$web);
$title = preg_replace('~</h1><h2 id="subTitle" class="it-sttl">(.*)~','',$title);
echo $title;
?>

【问题讨论】:

“不工作”是什么意思?我们倾向于在这里说“不工作”是最没有帮助的故障报告! ;-) 因此,如果你能说出你的期望,以及你得到的详细信息,那就可以回答了。 您可能需要通过 DOMDocument 处理这个 html - 使用正则表达式处理 HTML 通常比它的价值更麻烦。 (虽然我并不总是同情 eBay 作为一家公司,但值得知道他们过去曾对刮板采取过法律行动。因此,在这个项目上预测您的业务成功可能并不明智,如果是商业企业!)。 你回显的 $price 变量是什么?它从未在任何地方宣布...... 【参考方案1】:

或者,您也可以使用(如 halfer 建议的那样)DOMDocument 和 xpath 来获取它们,并且更容易使用它们的 id 来代替。示例:

$url = 'http://www.ebay.com/itm/7-inch-Android-4-2-A13-Capacitive-Touch-Screen-WiFi-Tablet-PC-Front-Camera-8GB/361031774590';
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTMLFile($url);
libxml_clear_errors();
$xpath = new DOMXPath($dom);
$title = $xpath->query('//h1[@id="itemTitle"]')->item(0)->lastChild->nodeValue;
$description = $xpath->query('//h2[@id="subTitle"]')->item(0)->nodeValue;

echo $title . '<br/>';
echo $description;

【讨论】:

谢谢你的帮助,它工作正常 :) 但我不能 +1 你,因为我需要它的声誉:(【参考方案2】:

我认为更好的方法是从 URL 中提取商品编号,然后对 eBay 进行 API 调用以检索商品信息。 (eBay API 可免费注册,您可以立即开始使用。)

从 URL 中提取 item# 的一种快速简便的方法是提取前 10-13 位数字。会有一些罕见的边缘情况不起作用(例如项目标题中的长部件号),但我不会担心。

除了 API,您还可以考虑使用 eBay 的 RSS 提要来检索您想要的数据。

【讨论】:

以上是关于查找字符串并将其值保存在字符串中的主要内容,如果未能解决你的问题,请参考以下文章

xpath:查找具有给定属性的节点,其值包含字符串

如何打开文件、替换一些字符串并将更新保存到同一个文件?

java指定文件夹下查找固定的字符串并将其所在的文件名,行数,该行全部内容写入txt文件中(具体实例)

我如何遍历表单数组并将其值设置为打字稿中的另一个数组?

从 QComboBox 中选择字符串并将 ID 插入 SQLite db

使用Dojo获取查询字符串