【问题标题】:PHP get tag urlPHP 获取标签地址
【发布时间】:2011-08-24 23:53:31
【问题描述】:

你好,如果我想要这个文本:

$content = '<div id="hey">
   <div id="bla"></div>
</div>

<div id="hey">
 hey lol
</div>';
  • id="hey" 里面的内容可以更改。
    现在我想获取数组中的标签

    $array[0] = < div id="bla"></div >;
    $array[1] = < hey lol >;
    

我该怎么做?我想preg_match_all

【问题讨论】:

  • 你的问题到底是什么?
  • 仅根据您在这里的情况,我有两个 cmets。首先,您有两个具有相同id 的 div... 这很糟糕。也许您想改用class?其次,您可以使用正则表达式,但由于 HTML 不是正则语言,因此正则表达式并不理想。你是如何生成这些字符串的,你能以其他方式完成你需要做的事情吗?我们需要更多的上下文。此外,我什至认为您的示例数组没有意义,并且在另一个 div 中匹配一个 div 可能会变得很不稳定。
  • 我想从 file_get_content url 获取 div,例如来自 url 的所有 div id="hey"

标签: php html tags get


【解决方案1】:

听起来,如果我理解正确的话,您正在寻找使用 PHP 解析 HTML。虽然正则表达式可以工作,但它肯定不是最好的方法。

话虽如此,看看DOMDocument 类。它允许您解析 HTML 文件,并且在通过标签、id 等引用元素方面具有类似于 javascript 的方法。

根据你的例子:

<?php

$html = '<div id="hey">hey lol</div>'; /* or file_get_contents('...'); */

$dom = new DOMDocument();
$dom->loadHTML($html);

// this will get <div id="hey"></div>
$hey_div = $dom->getElementById('hey');

echo $hey_div->textContent; // "hey lol"

【讨论】:

  • 我正打算发布这样的内容。看看stackoverflow.com/questions/2691798/…php.net/manual/en/class.domdocument.php,这可能会让 OP 走上正确的道路。
  • 但如果我有多个
    ?我试过了,但它不起作用。
  • @Absort:具有相同 ID 的多个元素是无效的 HTML。您可以使用$dom-&gt;getElementsByTagName('div') 并寻找那些id 为“hey”的人,尽管我会努力确保HTML 是有效的(如果您可以控制它)。 id 的全部目的是在整个页面中唯一
【解决方案2】:
$content=str_replace("hey","bla",$content);

$divid="hey";
//$divid="bla";
$content = '<div id="' . $divid . '">
   <div id="bla"></div>
</div>

<div id="hey">
 hey lol
</div>';

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签