Zend Framework 2 を使用していくつかの作業を行っています。ここでは、 Htmlにあるユーザーの入力をクリーンアップする必要があります。名前空間と自動読み込みを使用せずにプレーンphpでphp tidy拡張[これを参照]を使用したことがありますが、そのコードはうまくいきます。
今回は、zf2 で次のようなビュー ヘルパーを作成しました。
<?php
namespace Blog\View\Helper;
use Zend\View\Helper\AbstractHelper;
class TidyHtml extends AbstractHelper
{
public function __invoke($userHtml){
$config = array(
'indent' => true,
'output-xhtml' => true,
'wrap' => 200);
$userHtml = '<div id="wrapper">'.$userHtml.'</div>';
$tidy = new tidy();
$tidy->parseString($userHtml,$config,'utf8');
$tidy->cleanRepair();
$dom = new DOMDocument();
$dom->loadHTML($tidy);
$node = $dom->getElementsById("wrapper");
$newdoc = new DOMDocument();
$cloned = $node->item(0)->cloneNode(TRUE);
$newdoc->appendChild($newdoc->importNode($cloned,TRUE));
return $newdoc->saveHTML();
}
}
14 行目で tidy のインスタンスを作成したいのですが、エラーが発生しました:
PHP Fatal error: Class 'Blog\\View\\Helper\\tidy' not found in /var/www/zf2-tutorial
/module/Blog/src/Blog/View/Helper/TidyHtml.php on line 14
どうやらphpはtidyをユーザー定義クラスとして扱い、その宣言を見つけることができません。zf2 のオートローディング機能が何らかの影響を与えている可能性があります。tidy2.0 拡張機能が私のマシンに適切にインストールされていると確信しています。