【问题标题】:PHP allow img tags onlyPHP 只允许 img 标签
【发布时间】:2010-11-25 06:46:24
【问题描述】:

我需要你的帮助相关的 php.ini 文件。在 php 中,我只想允许 html <img> 标签,我尝试了 php 的内置函数 strip_tags() 但它没有给我我需要的输出。例如,在以下代码中,strip_tags() 允许 img 标签,但与文本一起使用。

$img = "<img src='/img/fawaz.jpg' alt= ''> <br /> <p> This is a detailed paragraph about Fawaz and his mates.</p>";
echo strip_tags($img , "<img>");

只允许&lt;img&gt; 或仅来自函数或变量的任何标记的正确方法是什么。 任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 抱歉,您能改写一下吗?更好的是,向我们展示您期望的输出。
  • 您是要提取&lt;img/&gt; 标签还是innerHTML
  • @stillstanding:是的,我只想提取 标签,不想要任何

    、文本或任何其他标签。

  • @deceze:从 $img 变量中,我只希望图像作为输出。
  • 在此处使用反引号突出显示代码,否则您的问题会变得混乱! stackoverflow.com/editing-help

标签: php weblogic strip-tags


【解决方案1】:

这可能是由于您的代码中没有关闭 img 标记。试试这个

$img = "<img src='/img/fawaz.jpg' alt= '' /> <br /> <p> This is a detailed paragraph about Fawaz and his mates.</p>";
echo strip_tags($img , "<img>");

【讨论】:

  • 格式是 HTML 有效的,但 strip_tags 并不真正关心这一点。它也可以在没有关闭 / 的情况下工作。
  • 这不起作用,伙计。顺便说一句,strip_tags() 可以自行关闭 HTML 标签。您不需要传递像 strip_tags($img , "

    "); 这样的参数,但只需 ( , "

    ")。

  • @Fawaz,不知道 strip_tags 会关闭标签!很高兴知道这一点!谢谢! +1
【解决方案2】:

strip_tags() 不能按照您希望的方式工作。如果提供了第二个参数,则列出的标签允许成为结果字符串的一部分 - 未列出的标签除外。而且它不会过滤掉内部文本。

如果您只想提取 &lt;img/&gt; 元素,甚至不要考虑使用正则表达式。为此使用 DOM 解析器:

libxml_use_internal_errors(true);
$doc=new DOMDocument;
$html=$doc->loadHTML('<img src="/img/fawaz.jpg" alt= ""> <br /> <p> This is a
detailed paragraph about Fawaz and his mates.</p>');
$path=new DOMXPath($doc);
foreach ($path->query('//img') as $found)
    var_dump($doc->saveXML($found));

【讨论】:

  • @stillstanding:我在 StackOverFlow 的某个地方看到了这个 sn-p。这是唯一的解决方案吗??
  • 如前所述,使用正则表达式是另一种选择 - 但不要打扰。以后你会遇到更多的问题。您还可以编写一个字符串解析器。但预计代码会很长。
  • @Fawaz 使用正则表达式这将是微不足道的......直到它不是。如果你能保证输入的语法是正则的,那么这个问题就可以通过正则表达式来解决。在所有其他情况下,您需要实际解析字符串以提取您想要的标签。
  • @deceze:好的,如果我指定提取唯一的一个标签:&lt;img&gt;。那么??
  • @Fawaz 以&lt;img src="foo.jpg" alt="&lt;Awesome!&gt;"&gt; 为例。嵌套的 &lt;&gt; 会绊倒正则表达式。在解析文本之前,您无法判断 &gt; 是关闭标记还是属性的一部分,这对于正则表达式或任何简单的文本操作方法都是不可能的。这就是为什么:如果您可以保证输入足够规则以被正则表达式处理,那么您将不需要解析器。我怀疑你能保证这一点。
【解决方案3】:

删除没有 &lt;img&gt;&lt;a&gt;&lt;br/&gt;&lt;hr/&gt; 和 ...

的 HTML 标记
$img = "
        <img src='/img/fawaz.jpg' alt= '' />
        <br /><br/>
        <hr/>
        <p> This is a detailed paragraph about Fawaz and his mates.</p>
        <a href='cft'>123</a>
        ";
$img = strip_tags($img , "<img>|<a>|<br>|<hr>");
echo $img;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    相关资源
    最近更新 更多