【问题标题】:Getting Specific Data in PHP在 PHP 中获取特定数据
【发布时间】:2012-11-01 17:30:28
【问题描述】:

使用 PHP 获取特定数据的方法是什么。在这种情况下,我想获取一些由<span class="s"> 包裹的文本到第一个<b> HTML 标记。
假设 HTML 源代码是:

Once there was a king <span class="s"> May 3  2009 <b> ABC Some Text </b> Some photo or video</span> but they have...

所以,在这里我想在一个变量中获取这些过滤后的数据:$fdata = "May 3 2009";
因为,May 3 2009&lt;span class="s"&gt; 包裹到第一个&lt;b&gt; HTML 标记。
我将在简单的 PHP HTML DOM 解析中使用它。那么,有什么想法或示例可以过滤这些文本并将其放入变量中吗?任何想法都会有很大帮助。

*如果您发现了重复的问题 here,则说明其更具体。

【问题讨论】:

  • 你是在问如何使用简单的html dom解析器来抓取元素?
  • 实际上我无法理解如何过滤这些文本并获取变量,如果可能的话,我将能够使用简单的 html dom 解析器来播放它。

标签: php variables


【解决方案1】:

使用简单的 HTML DOM http://simplehtmldom.sourceforge.net/

http://php.net/manual/en/domdocument.loadhtml.php

或者您也可以使用任何其他库。

【讨论】:

  • 是的,谢谢,但我知道。我无法理解的是如何将那些由&lt;span class="s"&gt; 包裹的文本放到第一个&lt;b&gt; HTML 标记中,并在变量中声明它,如果你知道,请给我一个例子。
  • 是否可以通过preg_replace 获取该数据,如果可以,请给我一个例子。谢谢
【解决方案2】:

如果你使用简单的 html dom 解析器,你会像这样抓取你要定位的元素:

$ret = $html->find('span class="s"'); 

这只是一个基本示例,但它应该能让你朝着正确的方向前进。

如果您需要找到一个非常具体的实例,您可以使用以下内容:

$ret = $html->find("#div1", 0)->children(1)->children(1)->children(2)->id;

【讨论】:

  • 实际上我想在变量中获取一些过滤后的文本,因此我们可以将其与从变量中的 url 获取 youtube 视频 ID 进行比较。
  • 使用我的第一个示例,它应该返回May 3 2009 &lt;b&gt; ABC Some Text &lt;/b&gt; Some photo or video。然后你可以修剪May 3 2009 之后的所有内容。您可能必须想出一些正则表达式来处理这个问题,因为月份和日期的长度可能会有所不同。
  • 谢谢,我正在尝试这个但不起作用:foreach($result-&gt;find('span class="s"') as $ftext) $new_des = implode(' ', array_slice(str_word_count($ftext, 1),0,4)); $result = str_replace($new_des, '', $result); $result = str_get_html($result); 所以它可以删除span class="s" 的前 4 个字,如何使它工作?
猜你喜欢
  • 2016-03-10
  • 2013-06-09
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多