例如。
<html>
<head></head>
<body>
<div>
<h1>-----> hello! ----< </h1>
</div>
</body>
我想用相应的 > 和 < 替换 h1 标记内的 > 和 <
哪个是正确的模式?
提前致谢!
例如。
<html>
<head></head>
<body>
<div>
<h1>-----> hello! ----< </h1>
</div>
</body>
我想用相应的 > 和 < 替换 h1 标记内的 > 和 <
哪个是正确的模式?
提前致谢!
同意评论者“为什么首先生成这个损坏的 HTML?”,如果您表示这样的文档,那么您将遇到当前遇到的这些问题。有两种有效情况
因此,当您从源数据(字符串、数据库)生成 HTML 文档时,您需要对它们进行转义(例如,通过使用htmlspecialchars作为另一个正确指出的回答者。)
您需要不惜一切代价避免出现这样的情况,即您有一个字符串,其中包含 HTML 标记和非转义文本。
例如,如果您的文本包含文本<b>text</b>
并且您确实希望该文本显示在 HTML 文档中,即您希望看到尖括号而不是粗体显示文本(例如,您正在编写有关如何编程的文档HTML),那么一旦您拥有这样的文档,您就无法将其与实际的 HTML 代码区分开来。
我会通过tidy。
您可以将其扔在tidy
(请参阅文档)并查看它是否可以修复错误。比尝试使用正则表达式自己做“正确的事情”要好得多。
$html = <<<EOT
<html>
<head></head>
<body>
<div>
<h1>-----> hello! ----< </h1>
</div>
</body>
EOT;
$config = array (
'clean' => true,
'drop-proprietary-attributes' => true,
'output-xhtml' => false,
'show-body-only' => false,
'wrap' => '0'
);
$tidy = new tidy();
$tidy->parseString($html, $config, 'utf8');
$tidy->cleanRepair();
echo tidy_get_output($tidy);
可能是您必须首先在 PHP 环境中启用 tidy。