【问题标题】:display a specific tag value from an html with php [duplicate]使用 php 显示来自 html 的特定标签值 [重复]
【发布时间】:2012-10-12 00:23:28
【问题描述】:

可能重复:
PHP: Strip a specific tag from HTML string?
How to parse and process HTML with PHP?

我的 mysql 数据库中有一个描述列,其中包含一些 html。像这样:

<p><img src="http://www.somesite.co/uploads/Optimized-basil_rajapaksa.jpg" alt="" width="250" height="183" /></p>
<p><span style="font-size: medium; color: #0000ff;">neis,a" iri&uacute; we&yuml;rka leojhs</span></p>
<p><span style="font-size: medium; color: #333333;">&uacute;Yaj&uacute;oHd, wdpd&frac34;hjrekaf.a jD;a;Sh wr.,h i&iuml;nkaOfhka idl&Eacute;Pd ls&Iacute;u ioyd wd&frac34;:sl ixj&frac34;Ok wud;H neis,a rdcmlaI uy;d iy &uacute;Yaj&uacute;oHd, wdpd&frac34;hjrekaf.a i&ntilde;;s i&iuml;f&iuml;,kh w;r fyg ^6&amp; &Egrave;k ;j;a idl&Eacute;Pdjla meje;a&ugrave;ug ;SrKh &ugrave; ;sfnkjd'&uacute;Yaj&uacute;oHd, wdpd&frac34;hjrekaf.a i&ntilde;;s i&iuml;f&iuml;</span><br /><span style="font-size: medium; color: #333333;">wod&lt; idl&Eacute;Pdjg wud;H neis,a rdcmlaI uy;df.ka ks&lt; jYfhka werhqula ,enqK nj o Tyq i|yka l</span></p>

当我在我的网页上回显它时,它会显示完整的 html,但是 我只想在我的网页上显示整个 html 中的第一个 span 标签值 怎么做?

【问题讨论】:

    标签: php


    【解决方案1】:

    您应该考虑使用DomDocument。它可以让你轻松解析 HTML。

    【讨论】:

    • 我建议将其作为评论而不是答案。
    • @hakre 为什么?如果他花时间查看 DomDocument,他会发现它可以解决他的问题。比为他提供正则表达式示例要好得多。
    • 因为它更像是一个评论而不是一个答案。顺便说一句,我并没有说这在技术上是错误的。我认为你确实在这里提出了一些非常有用的建议。
    • 点了。也许我也应该提供一些 DomDocument 示例。
    • 好吧,我想说这不是真的必要,因为这个网站已经有了这些。对于这个 FAQ-Site 来说,指向这个问题的完全相同的副本可能更有用(例如,您认为使用 DOMDocument 做得很好的那个)。
    【解决方案2】:

    假设您将 HTML 代码放入 $html 变量中:

    $html = <<<'CODE'
    <p><img src="http://www.somesite.co/uploads/Optimized-basil_rajapaksa.jpg" alt="" width="250" height="183" /></p>
    <p><span style="font-size: medium; color: #0000ff;">neis,a" iri&uacute; we&yuml;rka leojhs</span></p>
    <p><span style="font-size: medium; color: #333333;">&uacute;Yaj&uacute;oHd, wdpd&frac34;hjrekaf.a jD;a;Sh wr.,h i&iuml;nkaOfhka idl&Eacute;Pd ls&Iacute;u ioyd wd&frac34;:sl ixj&frac34;Ok wud;H neis,a rdcmlaI uy;d iy &uacute;Yaj&uacute;oHd, wdpd&frac34;hjrekaf.a i&ntilde;;s i&iuml;f&iuml;,kh w;r fyg ^6&amp; &Egrave;k ;j;a idl&Eacute;Pdjla meje;a&ugrave;ug ;SrKh &ugrave; ;sfnkjd'&uacute;Yaj&uacute;oHd, wdpd&frac34;hjrekaf.a i&ntilde;;s i&iuml;f&iuml;</span><br /><span style="font-size: medium; color: #333333;">wod&lt; idl&Eacute;Pdjg wud;H neis,a rdcmlaI uy;df.ka ks&lt; jYfhka werhqula ,enqK nj o Tyq i|yka l</span></p>
    CODE;
    

    你可以这样做:

    preg_match_all('/\<span[^\>]*\>([^\<]*)\<\/span\>/', $html, $matches);
    echo $matches[1][0]; // Shows: neis,a" iri&uacute; we&yuml;rka leojhs
    

    如果您想要第二个 &lt;span&gt; 的内容,请执行以下操作:

    echo $matches[1][1];
    

    如果您有更多 &lt;span&gt; 标签,则依此类推。

    【讨论】:

    • 我正在使用这样的获取数组来放置 html $html =
    • @jackflash:更好地指出现有问题,这些问题更好地涵盖了这一点。请注意,您可以提出答案,但这是重复的候选人。
    • @hakre 好的。我没有意识到这可能是重复的问题。刚刚回答是为了帮助OP。
    • @HarishKumar 这样做:$html = $fetch['content'];
    • @jackflash 你的评论完成了我的工作,但如果我想显示第二个 span 标签值,我该怎么办?
    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 2015-04-28
    相关资源
    最近更新 更多