Je suis en train d'ajouter des balises supplémentaires au package PEAR BBCodeParser http://pear.php.net/package/HTML_BBCodeParser/docs/latest/li_HTML_BBCodeParser.html, pour cela, je crois que je dois placer Object.php dans \ php5.3.0 \ PEAR \ pear \ HTML \ BBCodeParser \ Filtrer et appeler addFilter.Étendre HTML_BBCodeParser_Filter
Object.php
<?php
/*
New filter
@todo Lots
*/
require_once 'HTML/BBCodeParser/Filter.php';
class HTML_BB_CodeParser_Filter_Object extends HTML_BBCodeParser_Filter {
var $_definedTags = array('object' => array ('htmlopen' => 'object',
'htmlclose' => 'object',
'allowed' => 'all',
'attributes' => array()
)
)
}
?>
extbbcode.php
<?php
/*
The test display page
*/
error_reporting(E_STRICT);
require_once('HTML/BBCodeParser.php');
$parser = new HTML_BBCodeParser();
$parser->addFilter('object');
$parser->setText('[b]bold[/b] [object]test[/object]');
$parser->parse();
$parsed = $parser->getParsed();
echo htmlentities($parsed, ENT_QUOTES). ' | ';
echo $parsed;
?>
Quand je regarde extbbcode.php Je viens d'obtenir cette erreur
Strict Standards: Non-static method PEAR::getStaticProperty() should not be called statically, assuming $this from incompatible context in D:\wamp\bin\php\php5.3.0\PEAR\pear\HTML\BBCodeParser.php on line 169
Si je commente le parser- de $ > addFilter ('objet'); ligne puis il fonctionne comme prévu, c'est à dire, produit une sortie valide. Je peux également spécifier un filtre existant, à savoir
$parser->addFilter('basic');
$parser->addFilter('images');
Si je l'appelle addFilter avec un filtre non valide (c.-à, le fichier n'existe pas) je suis le « Impossible de charger le filtre $ filtre "message.
Quelqu'un peut-il repérer ce que je fais mal? Il me semble que Object.php est inclus, mais produit ces messages STRICT étranges. Donc, mon problème est définitivement avec ce fichier.
Si quelqu'un a une expérience avec cette classe ou ce message d'erreur et peut me diriger dans la bonne direction, je serais très heureux :)
function addFilter($filter)
{
$filter = ucfirst($filter);
if (!array_key_exists($filter, $this->_filters)) {
$class = 'HTML_BBCodeParser_Filter_'.$filter;
@include_once 'HTML/BBCodeParser/Filter/'.$filter.'.php';
if (!class_exists($class)) {
PEAR::raiseError("Failed to load filter $filter", null, PEAR_ERROR_DIE);
}
$this->_filters[$filter] = new $class;
$this->_definedTags = array_merge(
$this->_definedTags,
$this->_filters[$filter]->_definedTags
);
}
}
edit: a réussi à obtenir PEAR travailler sur mon WAMP local, donc je peux simplifier la question en écartant un autre problème que j'avais.
Eh bien, j'ai finalement découvert comment récupérer un message d'erreur, plutôt que d'un écran vide. error_reporting (E_STRICT); Maintenant, je vois cette erreur: Strict Standards: Méthode non statique PEAR :: getStaticProperty() ne devrait pas être appelée statiquement, en supposant $ this du contexte incompatible dans D: \ wamp \ bin \ php \ php5.3.0 \ PEAR \ pear \ HTML \ BBCodeParser.php en ligne 169 Des idées? – aland