0

例えば。

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

h1タグ内の>と<を対応する>と<に置き換えたい

正しいパターンはどれですか?

前もって感謝します!

4

3 に答える 3

2

「そもそもなぜこの壊れたHTMLが生成されるのか」というコメントに同意して、このようなドキュメントを表現すると、現在発生しているこれらの問題が正確に発生します。2つの有効な状況があります

  • いくつかのデータ(HTMLエスケープされていない)があります(例:PHPの文字列の束)
  • タグを含むHTMLドキュメントと、HTMLエスケープされたテキストがあります

したがって、ソースデータ(文字列、データベース)からHTMLドキュメントを生成するときは、それらをエスケープする必要があります(たとえば、別の回答者が正しく指摘したようにhtmlspecialcharsを使用します)。

HTMLタグとエスケープされていないテキストを含む、現在のような文字列がある状況を絶対に回避する必要があります。

たとえば、テキストにテキストが含まれて<b>text</b>いて、そのテキストをHTMLドキュメントに文字通り表示したい場合、つまり、テキストを太字にするのではなく、山かっこを表示したい場合(たとえば、プログラミング方法に関するドキュメントを作成している場合) HTML)このようなドキュメントを作成すると、実際のHTMLコードと区別する方法がなくなります。

于 2010-11-05T10:43:55.737 に答える
1

私はそれをきちんと通過させます。

于 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 に答える