0

例如。

<html>
<head></head>
<body>
<div>
<h1>-----> hello! ----< </h1>
</div>
</body>

我想用相应的 > 和 < 替换 h1 标记内的 > 和 <

哪个是正确的模式?

提前致谢!

4

3 回答 3

2

同意评论者“为什么首先生成这个损坏的 HTML?”,如果您表示这样的文档,那么您将遇到当前遇到的这些问题。有两种有效情况

  • 你有一些数据(不是 HTML 转义的),例如 PHP 中的一堆字符串
  • 你有一个 HTML 文档,包含标签和 HTML 转义的文本

因此,当您从源数据(字符串、数据库)生成 HTML 文档时,您需要对它们进行转义(例如,通过使用htmlspecialchars作为另一个正确指出的回答者。)

您需要不惜一切代价避免出现这样的情况,即您有一个字符串,其中包含 HTML 标记和非转义文本。

例如,如果您的文本包含文本<b>text</b>并且您确实希望该文本显示在 HTML 文档中,即您希望看到尖括号而不是粗体显示文本(例如,您正在编写有关如何编程的文档HTML),那么一旦您拥有这样的文档,您就无法将其与实际的 HTML 代码区分开来。

于 2010-11-05T10:43:55.737 回答
1

我会通过tidy

于 2010-11-05T10:44:42.610 回答
1

您可以将其扔在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。

于 2010-11-05T10:52:36.000 回答