سؤال

أحاول السماح بسمة REL في عناصر داخل مرشح تنقية HTML. أنا متابعة هذا الدليل http://htmlpurifier.org/docs/enduser-customize.html. وهنا رمز بلدي:

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Doctype', 'XHTML 1.0 Strict');
$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
$config->set('HTML.DefinitionRev', 1);
$config->set('Cache.DefinitionImpl', null); // remove this later!
$def = $config->getHTMLDefinition(true);
$def->addAttribute('a', 'href*', 'URI');
$def->addAttribute('a', 'rel', 'CDATA');
$purifier = new HTMLPurifier($config);

ومع ذلك، فإن تنقية HTML لا تزال تصفية جميع سمات REL ... أنا مرتبك قليلا ما يمكن أن تكون المشكلة.

عندما أستخدم:

$config->set('Attr', 'AllowedRel', array('something'));

أحصل على هذا الخطأ:

إشعار: استخدام API مهملة: استخدام $config->set('Attr.AllowedRel', ...) بدلا من ذلك على الخط 191 في الملف C:\wamp\www\neonet\application\modules\admin\controllers\IndexController.php في C:\wamp\www\neonet\library\My\htmlpurifier-4.0.0-standalone\HTMLPurifier.standalone.php على الخط 1819.

تعديل:

رمز جديد:

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Doctype', 'XHTML 1.0 Strict');
$config->set('Attr.AllowedRel', array('something'));
$purifier = new HTMLPurifier($config);

عندما أستخدم:

<href="/" rel="something">anchor</a>

سمة rel لا تزال تصفية.

هل كانت مفيدة؟

المحلول

قد يكون توجيه التكوين هذا ذو أهمية لك. أما بالنسبة لرمزك، فإنه يعمل بالنسبة لي؛ ربما لديك اقتباسات سحرية تحولت أو لم تدفق المخزنة مؤقتا بشكل مناسب؟ (حاول أن تصطدم في هذه الحالة.)

الخطأ الكلاسيكي الآخر عند محاولة استخدام REL هو أنه لا يعمل مع XHTML صارمة؛ أن doctype لا يحدد REL، لذلك لا يفعل AttrallowDREDREL أي شيء (يجب ذكر ذلك في المستندات ولكن ليس كذلك.) لذلك، سيتعين عليك اختيار DocType مختلفة إذا كنت ترغب في الاحتفاظ بالشوion الخاص بك W3C أو استخدام التعليمات البرمجية الأصلية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top