phpを使用してHTMLファイルをDOMドキュメントとして処理しようとしています。処理は大丈夫ですが、$ html-> saveHTMLFile( "file_out.html")でhtmlドキュメントを保存すると、すべてのリンクタグがから変換されています。私はPHPスクリプトとしてリンクを処理php htmlタグを文字列に変換しました
Click here: <a title="editable" href="http://somewhere.net"> somewhere.net </a>
に
Click here: <a title="editable" href="http://somewhere.net">somewhere.net</a>
、多分これは違いを作りますか? <
をhtmlentitites_decode()などで<に戻すことはできません。私が使用できる他の変換やエンコーディングはありますか?
PHPスクリプトは、次のようになります。
<?php
$text = $_POST["textareaX"];
$id = $_GET["id"];
$ref = $_GET["ref"];
$html = new DOMDocument();
$html->preserveWhiteSpace = true;
$html->formatOutput = false;
$html->substituteEntities = false;
$html->loadHTMLFile($ref.".html");
$elem = $html->getElementById($id);
$elem->nodeValue = $innerHTML;
if ($text == "")
{ $text = "--- No details. ---"; }
$newtext = "";
$words = explode(" ",$text);
foreach ($words as $word) {
if (strpos($word, "http://") !== false) {
$newtext .= "<a alt=\"editable\" href=\"".$word."\">".$word."</a>";
}
else {$newtext .= $word." ";}
}
$text = $newtext;
function setInnerHTML($DOM, $element, $innerHTML) {
$node = $DOM->createTextNode($innerHTML);
$children = $element->childNodes;
foreach ($children as $child) {
$element->removeChild($child);
}
$element->appendChild($node);
}
setInnerHTML($html, $elem, $text);
$html->saveHTMLFile($ref.".html");
header('Location: '."tracking.php?ref=$ref&user=unLock");
?>
私たちは、「ID」と「REF」とアレイ「textareaX」からの入力データからファイルへの参照を取得します。次に、ファイルを開き、html要素をidで識別し、その内容(リンク)をテキストエリアの入力データで置き換えます。私はテキストエリアのhrefだけを提供し、スクリプトはそのテキストからハイパーリンクを作成します。次に、これを元のファイルにプラグインして、入力ファイルを上書きします。
新しいファイルを書き込むと、<a href= ...> </a>
のリンクが<a href=...> </a>
に変換されるという問題があります。ここで
を同じコードwiorks私のために:あなたがする必要がどのような
は、それを追加HTML(ないテキストノード)としての要素を作成することです。 私は '$ html = new DOMDocument();を使っています。 $ html-> loadHTMLFile( "file_in.html"); $ html-> preserveWhiteSpace = true; $ html-> formatOutput = true; $ html-> saveHTMLFile( "file_out.html"); ' – Jagadeesh
こんにちは@ジャック!たぶん私は十分な情報を提供していないかもしれません。私は自分の質問を編集し、スクリプト全体を追加しました。問題は解決しません。 –