2010-06-02 5 views
3

Je voudrais une fonction qui analyse BB Code de vBulletin dans un balisage HTML standard. Sans utiliser la bibliothèque PEAR ou l'extension PECL, parce que je ne veux pas m'embêter avec PEAR ou dépendre de pouvoir installer une extension PECL sur chaque instance de cette application. L'objectif est zéro dépendances. Ce serait bien si je pouvais trouver le code source de l'extension PEAR et le modifier, mais il semble que je ne puisse pas le faire. En particulier, le problème que je rencontre est [quote=My Name]. Le nom 'Mon nom' n'est entouré d'aucun élément et peut contenir des espaces.Parse BB Code BB en PHP

+0

Que voulez-vous dire "Sans utiliser la bibliothèque PEAR ou l'extension PECL"? C'est certainement la réponse la plus * évidente *, alors pourquoi pas? –

+0

Parce que je ne veux pas m'embêter avec PEAR ou avoir besoin de pouvoir installer une extension PECL sur * chaque * instance de cette application. –

Répondre

1

Eh bien, en plus de la PEAR package et la PECL extension vous avez également un Zend Framework package appelé Zend_Markup qui est très facile à utiliser (ZF est couplé de façon lâche, de sorte que vous pouvez choisir d'utiliser uniquement ce composant). Il y a aussi quelques classes sur PHP Classes.

0

Je vous suggère de simplement adapter l'extension PEAR. Il n'a aucune dépendance sur les autres bibliothèques PEAR, donc il devrait être assez simple.

+0

Avez-vous un lien vers le code source de l'extension PEAR? J'ai été incapable de le trouver. –

+0

@Josh K Voir http://pear.php.net/package/HTML_BBCodeParser/download ou http: //pear.php.net/package/Text_Wiki/download ou – Artefacto

0

L'une des façons les plus difficiles est d'utiliser regex: « (. *) »

 
$text = "[quote=my name]something. 
[b]bla[b] 
blabla.[/quote]"; 
$search = "/\[quote=(?>([a-z0-9]*))\](.*)\[/quote\]/is"; 
$replace = "From <i>$1</i>: <q>$2</q>"; 
$return_text = preg_replace($search, $replace, $text); 

echo nl2br($return_text); 

/* 
From <i>my name</i>: <q>something. 
[b]bla[b] 
blabla.</q> 
*/ 

Je dis le plus dur seulement en raison de la possibilité de retours en arrière catastrophique sur ce point, en particulier avec le texte plus, et une chance de quelques-uns les allumettes glissent à travers les fissures. Ainsi, vous voudrez peut-être aller directement à la source pour trouver l'expression rationnelle appropriée: http://www.bbcode.org/implementations.php (voir: BBCode simple et complexe avec PHP pour regex, phpBBCode pour le code source). Sinon, vous pouvez dupliquer et construire sur l'analyseur de poire de sourcecode ici: http://svn.php.net/viewvc/pear/packages/HTML_BBCodeParser

1

: (peut-être inutilement) (introduction 5 ans de développement avec vBulletin)

l'analyseur de vBulletin est assez complexe par rapport à la plupart des expressions régulières là-bas ou baisse -in-bibliothèques. Je vais honnêtement juste creuser à travers, et prendre ce que vous pouvez, car ils ont tendance à faire les choses un peu différemment. Je serais surpris si vous avez un parser parfaitement fonctionnel sans avoir à voir comment ils génèrent/analysent eux-mêmes. S'il s'agit d'anciennes données, vous pouvez écrire les vôtres, mais si elles sont anciennes et nouvelles, pourquoi ne pas les mettre en cache du côté de vBulletin et utiliser ce qu'elles génèrent? Ou utilisez simplement la classe vB_BbCode_Parser directement ...

Espérons que cela aide.

+0

Je n'ai pas accès à l'analyseur vBulletin, je gère le BBCode depuis le forum. –

Questions connexes