function isAJAX()
{
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest')
{
return true;
}
return false;
}
function isAJAX()
{
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest')
{
return true;
}
return false;
}<input type="hidden" name="JSOff" value="1" />
mon script PHP peut regarder si cette variable existe ou pas, si elle existe, je sais que je ne suis pas passé par AJAX donc je fais un header redirigeant sur ma page.ça m a l'air de tenir la route.Code : Tout sélectionner
function __construct(){
$this->m_nAccesBD = new connexionBD();
}
Ce que je veux faire, c est déplacer ça dans le constructeur de appControl(), comme ça ça sera appelé qu'à un seul endroit, et dans cette classe, faire une méthode du style function machin($sql){ } qui sera appelé dans chacune de mes méthodes ou j'ai un traitement SQL.[/html ], [sql ][/sql ], [php ][/php ] etc...
Je voudrais leur faire appliquer la coloration syntaxique de la librairie PEAR Text_Highlighter mais je ne sais pas du tout comment coupler les deux systèmes.
Pour parser le code BB et lui faire ressortir du html, je fonctionne comme ceci :
[php]
function bbcodeParse($texte){
$texte = preg_replace('`\[code\](.+)\[/code\]`iUs','$1',$texte);
}
[/php]
et pour faire afficher de la coloration syntaxique, la librairie s'utilise de cette façon :
[php]
$hlSQL =& Text_Highlighter::factory("SQL");
$hlSQL->setRenderer(new Text_Highlighter_Renderer_Console);
echo $hlSQL->highlight("SELECT * FROM some_table WHERE id = 12");
[/php]
le soucis est comment interpréter du [sql]select * from truc[/sql ] dans ma fonction bbcodeParse.
J ai essayé de récupérer le contenu de la balise en faisant un preg_match du genre :
[php]
if(preg_match('`\[sql\](.+)\[/sql\]`iUs',$texte)){
$hl =& Text_Highlighter::factory("SQL");
$hl->setRenderer(new Text_Highlighter_Renderer_Console);
$texte = preg_replace('`\[sql](.+)\[/sql\]`iUs',$hlSQL->highlight($1),$texte);
}
[/php]
mais ça ne fonctionne pas et c'est même normal que ça fonctionne pas :D . Sauf que je ne vois aps du tout comment contourner le problème.
$texte = preg_replace_callback('`\[sql](.+)\[/sql\]`iUs', array($hlSQL, 'highlight'), $texte);
par contre je déconseille l'utilisation du ` : http://www.php.net/manual/fr/language.o ... cution.phpJe ne connaissais pas cette fonction. je testerai ce soir avec plaisir, sinon j'ai trouvé un forum ou apaprement le mec a le même soucis : http://freak.no/forum/archive/index.php/t-164433.html, sauf que personnelement...je ne parle pas le norvégienavec preg_replace_callbackpar contre je déconseille l'utilisation du ` : http://www.php.net/manual/fr/language.o ... cution.php$texte = preg_replace_callback('`\[sql](.+)\[/sql\]`iUs', array($hlSQL, 'highlight'), $texte);
if(preg_match('#\[sql\](.*)\[\/sql\]#sU',$texte)){
$rendererSql =& new Text_Highlighter_Renderer_Html(array("numbers" => HL_NUMBERS_LI, "tabsize" => 4));
$hlSql =& Text_Highlighter::factory("SQL");
$hlSql->setRenderer($rendererSql);
$texte = preg_replace_callback('`\[sql](.+)\[/sql\]`iUs', array($hlSql, 'highlight'), $texte);
}
Le soucis c'est que ça me retourne rien, mais surtout que je n'ai aucun message d'erreur, rien...
if(preg_match('...',$texte,$captures)){
print_r($captures);
}le preg_match me sert en fait à savoir quel type de balise BBcode est utilisée. Je ne compte pas me servir du résultat renvoyéA noter que pour récupérer les résultats de captures d'un preg_match(), il faut renseigner le troisième paramètre...if(preg_match('...',$texte,$captures)){ print_r($captures); }
if(preg_match('#\[sql\](.*)\[\/sql\]#sU',$texte, $matches)){
$rendererSql =& new Text_Highlighter_Renderer_Html(array("numbers" => HL_NUMBERS_LI, "tabsize" => 4));
$hlSql =& Text_Highlighter::factory("SQL");
$hlSql->setRenderer($rendererSql);
$codeSql = $hlSql->highlight($matches[0]);
$texte = preg_replace('`\[sql](.+)\[/sql\]`iUs', $codeSql, $texte);
}
ps : étant au taff, je ne peux pas coder sur mon CMS ^^En tout cas, pas de la façon ou je l'ai fait.le preg_callback ca marche pas ?
$texte = preg_replace_callback('`\[sql](.+)\[/sql\]`iUs', array($hlSql, 'highlight($1)'), $texte);
?
je comprends pas alors comment est passé dans highlight, le contenu des balisespas besoin de faire ca, c'est les groupes les paramètres
c'est bien : array($hlSql, 'highlight')
.
parce que les paramètres de la fonction correspondent au groupeje comprends pas alors comment est passé dans highlight, le contenu des balisespas besoin de faire ca, c'est les groupes les paramètres
c'est bien : array($hlSql, 'highlight').