[OK]を、私はHTMLPurifierにカスタムインジェクタを追加することに成功し、ここにある:
まず、」の "DisplayRemoteLinkURI.php"を作成します\ HTMLPurifier \ htmlpurifier \ライブラリが含まれます\インジェクター「とそれ
<?php
class HTMLPurifier_Injector_DisplayRemoteLinkURI extends HTMLPurifier_Injector
{
public $name = 'DisplayRemoteLinkURI';
public $needed = array('a');
public function handleElement(&$token) {
}
public function handleEnd(&$token) {
if (isset($token->start->attr['href'])){
$url = $token->start->attr['href'];
if($this->is_remote($url)){
unset($token->start->attr['href']);
$token = array($token, new HTMLPurifier_Token_Text(" ($url)"));
}
} else {
// nothing to display
}
}
public function is_remote($path){
$urlvar = parse_url($path);
$remote_schemes = array("mailto");
$local_schemes = array("javascript");
if(in_array($urlvar["scheme"],$remote_schemes)){
return true;
}else if(in_array($urlvar["scheme"],$local_schemes)){
return false;
}else{
if(empty($urlvar["host"]) || $urlvar["host"]==$_SERVER["HTTP_HOST"]){
return false;
}else{
return true;
}
}
}
}
?>
でこれを書いて、それからという名前の別のファイルを作成」AUTを"中" oFormat.DisplayRemoteLinkURI.txt は\ htmlpurifier \ライブラリ\ HTMLPurifier \ ConfigSchemaスキーマ \ "が含まれており、これを追加します。
AutoFormat.DisplayRemoteLinkURI
TYPE: bool
VERSION: 3.2.0
DEFAULT: false
--DESCRIPTION--
<p>
This directive turns on the in-text display of Remote URIs in <a> tags, and disables
those links. For example, <a href="http://example.com">example</a> becomes
example (<a>http://example.com</a>).
</p>
--# vim: et sw=4 sts=4
をその後、
の下で、このライン
require 'HTMLPurifier/Injector/DisplayRemoteLinkURI.php';
を追加します。
require 'HTMLPurifier/Injector/DisplayLinkURI.php';
\ htmlpurifier \ library \ HTMLPurifier.includes.php
その後、で
require_once $__dir . '/HTMLPurifier/Injector/DisplayLinkURI.php';
には、下の行
require_once $__dir . '/HTMLPurifier/Injector/DisplayRemoteLinkURI.php';
を追加\ htmlpurifierは、ライブラリ\ \ HTMLPurifier.safe-含まれています。これらの編集後のphp
、あなたのファイルは、ローカル、実行cmd.exeのであり、あなたのPHPのディレクトリに移動します。次に、php.exeから "include/HTMLPurifier/maintenance/generate-schema-cache.php"を実行します。
ブラウザでこれを行う場合は、「include/HTMLPurifier/maintenance /」内の.htaccessファイルの名前をしばらく変更してから、この行を「generate-schema-cache.php」内に追加します。 <?php
タグの後の最初の行。
php_set_env("PHP_IS_CLI",true);
このファイルをブラウザから実行します。 「スキーマを保存しています!完了!」と表示されたら、.htaccessファイルの名前を変更してください。
スクリプトでは、 "AutoFormat.DisplayRemoteLinkURI"を設定として使用してください。
私がここに示した最初のファイル内のis_remote()関数はあまり良くないかもしれないことに注意してください。リンクがリモートかローカルかをチェックするスクリプトを見つけることができませんでした。必要。
こんにちは、あなたの努力をありがとう。私はファイルを作成し、上記のコードを追加し、私はコマンドラインからPHPファイルを実行します。ファイルライブラリ/ HTMLPurifier/ConfigSchema/schema.serが作成されます。 AutoFormat.DisplayRemoteLinkURIを設定に追加しましたが、この警告が表示されます。 "警告:定義されていないディレクティブAutoFormat.DisplayRemoteLinkURIを値に設定できません..."私はschema.serのDisplayRemoteLinkURIを探しましたが、見つけられませんでした。私のファイルはローカルで、私は走っています(php htmlpurifier/maintenance/generate-schema-cache.php)。私は「スキーを保存しています...完了しました」というメッセージを受け取りました。 –
他の変更はありませんでした。もう一度見てみましょう。 –
txtファイルもありましたが、忘れてしまいました。私はコードを更新しました。テキストファイルを追加し、スキーマを再構築します。 –