2013-06-13 20 views
12

Attualmente sto usando questo codice con HTMLPurifier per consentire attributi data-* tag HTML:permettendo dati- * attributi con HTMLPurifier

$def = $config->getHTMLDefinition(true); 
    $def->addAttribute('div', 'data-aaa', 'Text'); 
    $def->addAttribute('div', 'data-bbb', 'Text'); 
    // ... 

C'è un modo per consentire a tutti i data-* attributi in una sola volta, preferibilmente su tutto il codice HTML tag? (non sono un problema di sicurezza nel mio caso - per quanto ne so, ovviamente)

risposta

1

No, non è possibile senza modificare la strategia degli attributi validi.

+0

Sai come si potrebbe fare? Ho provato a guardare il codice ma non sono riuscito a trovare un posto dove è stato fatto ... – johndodo

+0

In altre parole, esiste un metodo 'isValidAttribute()' che posso sovrascrivere? – johndodo

+1

No, il problema è che 'isValidAttribute' viene eseguito utilizzando una ricerca hash, quindi è necessario sostituire l'intera struttura dati. –

7

Non è una soluzione completa, ma sono stato in grado di elencare a livello globale singoli attributi data- con il codice seguente, consentendo di posizionarli su qualsiasi elemento senza dover dettagliare ciascun tipo di elemento per ciascun attributo.

$def = $config->getHTMLDefinition(true); 
$def->info_global_attr['data-aaa-xxx'] = new HTMLPurifier_AttrDef_Text; 
$def->info_global_attr['data-bbb-yyy'] = new HTMLPurifier_AttrDef_Text; 
$def->info_global_attr['data-ccc-zzz'] = new HTMLPurifier_AttrDef_Text; 
+0

Questo ha funzionato perfettamente per le mie esigenze – DelightedD0D

Problemi correlati