我的页面的文件夹
system/ <-- offline files (classes, cronjobs, libraries ...)
online/ <-- contain all php scripts ( available online )
system/
classes <-- all my own classes inside.
... directories ...
libraries/htmlpurifier <- contain HTMLPurifier
我想使用spl_自动加载_寄存器()
<?php
define("DOC_ROOT", dirname(__DIR__));
function hTMLPurifier($class) {
require DOC_ROOT . '/system/libraries/htmlpurifier/library/' . strtolower(str_replace('\\', '/', $class)) . '.php';
}
function myAutoload($class) {
require DOC_ROOT . '/' . strtolower(str_replace('\\', '/', $class)) . '.php';
}
spl_autoload_register('hTMLPurifier');
spl_autoload_register('myAutoload');
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);
?>
我得到跟随消息。
.../htmlpurifier_config.php): failed to open stream: No such file or directory in ...
如果插入
"require_once '/path/to/HTMLPurifier.auto.php';"
在顶部
<?php
define("DOC_ROOT", dirname(__DIR__));
require_once '/path/to/HTMLPurifier.auto.php';
function myAutoload($class) {
require DOC_ROOT . '/' . strtolower(str_replace('\\', '/', $class)) . '.php';
}
spl_autoload_register('myAutoload');
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);
?>
一切都是工作。
我想加载所有类与spl_autoload_register()只有没有插入
"require_once '/path/to/HTMLPurifier.auto.php';"
在上面。我怎么能做到呢???
HTML净化器不适用于PHP名称空间,因此用/
替换\\\
不会获得您所寻求的结果。您的自动加载逻辑正在尝试从文件HTMLPurifier\u Config加载类
-所以您想要的是这样的:HTMLPurifier\u Config
。php
function autoloadHtmlPurifier($class) {
require DOC_ROOT . '/system/libraries/htmlpurifier/library/'
. str_replace('_', '/', $class) . '.php';
}
spl_autoload_register('autoloadHtmlPurifier');
(注意此函数如何不使用strtolower(),而是用/
替换。)
但是,看看HTML净化器的自动加载实现:
public static function getPath($class)
{
if (strncmp('HTMLPurifier', $class, 12) !== 0) {
return false;
}
// Custom implementations
if (strncmp('HTMLPurifier_Language_', $class, 22) === 0) {
$code = str_replace('_', '-', substr($class, 22));
$file = 'HTMLPurifier/Language/classes/' . $code . '.php';
} else {
$file = str_replace('_', '/', $class) . '.php';
}
if (!file_exists(HTMLPURIFIER_PREFIX . '/' . $file)) {
return false;
}
return $file;
}
...由于语言类edge case,简单的替换很有可能仍然无法正常工作。但你可以试试这个:
function autoloadHtmlPurifier($class) {
require DOC_ROOT . '/system/libraries/htmlpurifier/library/'
. str_replace('_', '/', $class) . '.php';
}
spl_autoload_register('autoloadHtmlPurifier');
spl_autoload_register(array('HTMLPurifier_Bootstrap', 'autoload'));
它使用您的自定义自动加载器加载
HTMLPurifier\u引导程序
类,因此您不需要将其包含在require
中,但仍然可以使用规范的HTML净化器自动加载器。
也就是说,不管是哪种情况,缺点是如果HTML净化器真的切换到名称空间,你的自动加载程序就会崩溃。我真的建议您坚持使用
require\u once(DOC\u ROOT./system/libraries/htmlpurifier/library/htmlpurifier.auto.php')
方法,或者使用composer
安装HTML净化器,这将为您自动加载该库(可能还有其他库):
对于指定自动加载信息的库,Composer将生成供应商/自动加载。php文件。您只需包含此文件并开始使用这些库提供的类,无需任何额外工作:
require __DIR__ . '/vendor/autoload.php';
优化级别1:类映射生成 怎么运行它呢? 有几个选项可以启用此功能: 在 composer.json 的配置中设置 "optimize-autoloader": true 使用 -o / --optimize-autoloader 调用安装或更新 使用 -o / --optimize 调用 dump-autoload 它有什么作用? 类映射生成实质上是将 PSR-4/PSR-0 规则转换为类映射规
有没有办法让HTML净化器保留在呈现的HTML中通常会看到的隐式空间? 例如,在以下情况下,您通常希望和之间有一个空格: 例1 例2
本文向大家介绍asp.net-core 寄存器和手动解析,包括了asp.net-core 寄存器和手动解析的使用技巧和注意事项,需要的朋友参考一下 示例 描述依赖关系的首选方法是使用构造函数注入,它遵循显式依赖性原则: ITestService.cs TestService.cs Startup.cs(ConfigureServices) HomeController.cs
对于简单的数据净化,使用 htmlentities() 函数, 复杂的数据净化则使用 HTML Purifier 库 经 HTML Purifier 4.4.0 测试 在任何 wbe 应用中展示用户输出时,首先对其进行“净化”去除任何潜在危险的 HTML 是非常必要的。 一个恶意的用户可以制作某些 HTML,若被你的 web 应用直接输出,对查看它的人来说会很危险。 虽然可以尝试使用正则表达式
实地址模式下的寄存器集合包括8086定义的所有寄存器,加上80386新引入的寄存器:FS, GS, 调试寄存器,控制寄存器,和测试寄存器。可以显式的使用段寄存器FS和GS作为操作数,而且可以使用新引入的段-重写前缀来利用FS和GS来计算地址。指令可以利用操作数长度前缀来使用32位操作数。 保护模式下操作,检查80386选择符和描述符的指令导致未定义操作码陷阱(中断6);这些指令包括:VERR, V
我刚刚开始使用composer进行依赖关系管理,我很难弄清楚我是如何不遵守psr-4进行自动加载的,所以我来这里寻求建议。我有一个生成随机值的类,它已经在packagist上了。项目结构如下(我已将composer.json文件标记为A和B): 项目总监 composer.jsonA composer.jsonB 最后是RlandValue.php文件,它声明了ejFrancis命名空间 当我运行