【问题标题】:Remove broken html tags from data in php从 php 中的数据中删除损坏的 html 标签
【发布时间】:2013-09-13 09:30:32
【问题描述】:

我正在开发 php 应用程序,我从不同来源(例如(电子邮件、数据库等))获得随机文本。现在我遇到了一个问题。我的文本包含损坏的 HTML 元素,例如

$purl  ='FTP details are as 
follow:User name : Mahmud
div>password :1234556Than
ks ';

。我尝试了 strip_tags 和一些 preg 匹配算法,但没有奏效。如果 HTML 元素不完整,如上面的div> 标记,我该如何删除它。我知道之前问过这个类型的问题,但我不知道我该怎么做。感谢您的帮助。

有关更多详细信息,我将添加此 Link。我正在获取电子邮件,然后使用 DOM 获取电子邮件的特定部分。

【问题讨论】:

  • 那些破碎的html元素有模式吗?
  • @AliTrixx 不,这次我得到了 div> 其他可能是别的东西。如果文本中出现任何此类损坏的 HTML,我想删除。谢谢
  • 由于没有模式或无法确定它们是否会发生,你应该用你想出的任何损坏的标签填充一个数组,然后使用 str_replace 将它们全部替换
  • 考虑到可能发生的错误范围,您将很难做到这一点——即使是网页浏览器有时也会在 HTML 损坏时出现问题,而且它们是专门设计的能够处理它。
  • @Spudley 我编辑我的问题并添加我以前的问题链接。从那里我收到消息然后我呈现该文本。

标签: php html preg-match


【解决方案1】:
http://php.net/manual/en/tidy.parsestring.php



<?php
ob_start();
?>

<html>
    <head>
        <title>test</title>
    </head>
    <body>
        <p>error<br>another line</i>
    </body>
</html>

<?php

$buffer = ob_get_clean();
$config = array('indent' => TRUE,
        'output-xhtml' => TRUE,
        'wrap' => 200);

$tidy = tidy_parse_string($buffer, $config, 'UTF8');

$tidy->cleanRepair();
echo $tidy;

?>

【讨论】:

【解决方案2】:

如果我是用户并且我希望我的用户名是&lt;span man,怎么样?

您实际上无法知道何时应该“更正”文本,因为它是一个损坏的标签,或者什么时候不是。

你应该对你的输入做点什么。您是否从 curl 输出中获取此文本?但无论如何,正如我所说,只需检查您的阅读输入。

【讨论】:

  • 这次我正在获取电子邮件,渲染后我有一些时间像上面一样。如果您想了解该代码,我也可以分享。谢谢
  • @AmalMurali 继续开发一个完全不关心所有输入的应用程序。发布它并保持您的电话关闭。
  • @MahmoodRehman 我很确定您没有正确进行提取。放置代码,我们可以检查它并尝试改进它。
  • 我认为如果我发布该代码,问题会更长。您能否专注于文本可能包含损坏的 html 元素这一点。我想我必须将损坏的元素存储在数组中,然后将其与文本匹配。
【解决方案3】:

您需要在您的 php 中安装和配置 HTML TIDY,有关详细信息,请参阅此链接

php.net/manual/en/book.tidy.php

而且这个问题之前也有人问过,代码参考这个链接(答案)

Remove HTML Entity if Incomplete

【讨论】:

  • 感谢您的回复。我在发布我的问题之前访问了该问题。我无法限制用户输入数据的时间,因为我正在获取而不是保存数据。
  • 不需要限制用户,在显示文本之前使用 HTML TIDY。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
  • 1970-01-01
相关资源
最近更新 更多