【问题标题】:PHP Query in what tag is the word.PHP 查询在什么标签中的单词。
【发布时间】:2014-04-03 13:04:26
【问题描述】:

我目前正在使用此代码来检索标签。

$title = $pq->find("title")->text();
$h1 = $pq->find("h1")->text();
$p = $pq->find("p")->text();

这是正确的做法吗?

其次,我必须查看我的数组 $array_words 中的哪个单词在哪个标签中。所以我检索了file_get_contents 并删除了所有标签并将所有单词放入一个数组中。现在让我们以此为例:

Array
(
    [0] => hello
    [1] => there
    [2] => this
    [3] => is
    [4] => a
    [8] => test
    [9] => array
)

这将是 HTML:

<html>
    <head>
        <title>
            hello there
        </title>
    </head>
    <body>
        <h1>
           this is a
        </h1>
        <p>
           test array
        </p>
    </body>
</html>

我怎样才能知道哪个词在哪个标签中找到?

我希望我能说明我想要做什么。

【问题讨论】:

  • 你在使用什么库,或者你在 $pq 变量中实例化了女巫类?
  • @MauricioPiberFão $pq = phpQuery::newDocument($file); 这就是我设置$pq 如果这就是你的意思=/ 库不只是php 5 吗?我是phpquery的新手,请原谅我的无知

标签: php phpquery


【解决方案1】:

基于这个问题,关键是您需要创建一个引用,说明 $array_words 中的哪个单词在某个 HTML 标记中。

所以你有一个要检查的标签数组,对吧?

我看到的是它:

  1. 获取您要检查的所有标签。
  2. 将所有标签放在 Foreach 上以检查所有内容。
  3. 在 Foreach 上,使用 phpQuery 查找这些标签中的单词。
  4. phpQuery 应该返回文本,因此您应该使用explode 插入一个名为“$words_from_text”的新单词数组。创建了一个新数组。
  5. 将“in_array”比较器用于新的 foreach(在旧的 foreach 中)以查找 $array_words 中的哪些单词在文本中。
  6. 如果在 $array_words 中找到来自 $words_from_text 的键,则通过设置附加到标签键的新数组来放入标签数组。

    $array_tags = ( 'h1','div','title', )

    $array_words = ( [0] => 你好 [1] => 那里 [2] => 这个 [3] => 是 [4] => 一个 [8] => 测试 [9] => 数组 )

最终的数组结果应该是这样的:

$array_tags = array(
   ['title'] = array('word1','word2'),
   ['h1']    = array('word3','word4'),
   ['div']   = array('word5','word6')
);

因此,如果您需要此示例,则可以使用此指南来解决您的问题。

【讨论】:

  • 感谢您的帮助!但我决定这样做:首先我设置$title,就像我在问题中所做的那样。然后在我的$array_words 的foreach 循环中,我刚刚添加了一个if,如下所示:if (strpos($title, $key) !== false)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
相关资源
最近更新 更多