8792 sujets
Bonjour,
Je suis peut être mal comprenant, mais j'ai rien compris à ta question... voils ce que j'ai compris :
tu veux normaliser une chaine qui ne l'est pas dans le format SQML c'est ça ?
d'une manière générale, lorsque tu veux utiliser les expressions régulières, il faut que tu détermines un "shémas type" dans les données. si tu n'y arrives pas, les fonctions utilisant les expressions régulières ne fonctionnerons pas.
pour ce qui est de formatter un langage de balises dans un autre, voilà ce que je fais :
1. je dresse la liste des balises à traduire (s'il y en a un nombre fini)
2. je dresse une table de correspondances entre un langage et l'autre
3. je crée une expression régulière par balise à traduire afin de récupérer les différents éléments de chaque balise
4. je crée une fonction de "callback" qui reformattera les balises
5. j'utilise la commande preg_replace_callback avec chacune de mes expressions régulières
en gros ça devrait donner un truc style (traduction BBcode>XHTML)
en espérant que ça t'auras aidé
bon courage[/b]
Je suis peut être mal comprenant, mais j'ai rien compris à ta question... voils ce que j'ai compris :
tu veux normaliser une chaine qui ne l'est pas dans le format SQML c'est ça ?
d'une manière générale, lorsque tu veux utiliser les expressions régulières, il faut que tu détermines un "shémas type" dans les données. si tu n'y arrives pas, les fonctions utilisant les expressions régulières ne fonctionnerons pas.
pour ce qui est de formatter un langage de balises dans un autre, voilà ce que je fais :
1. je dresse la liste des balises à traduire (s'il y en a un nombre fini)
2. je dresse une table de correspondances entre un langage et l'autre
3. je crée une expression régulière par balise à traduire afin de récupérer les différents éléments de chaque balise
4. je crée une fonction de "callback" qui reformattera les balises
5. j'utilise la commande preg_replace_callback avec chacune de mes expressions régulières
en gros ça devrait donner un truc style (traduction BBcode>XHTML)
<?php
function MaFonctionDeCallback($morceaux) {
global $k;
switch ($k) {
case "a":
$ret="<a href=\"$morceaux[1]\">$morceaux[2]</a>";
break;
case "b":
$ret="<b>$morceaux[1]</b>";
break;
}
return $ret;
}
// liste des balises
// j'ai rajouté des espaces dans les balises car PHPBB ne les affiche pas si non
$t_regs[a]="`[ url=(.*)](.*)[ /url ]`i";
$t_regss[b]="`[ b ](.*)[ /b ]`i";
foreach($t_regs as $k=>$v) {
$texte = preg_replace_callback($v,"MaFonctionDeCallback",$texte);
}
en espérant que ça t'auras aidé

bon courage[/b]
Ce que je ne comprend pas c'est que lors de la validation de la page xhtml 1.0 strict, j'ai l'erreur 'non SGML character number 146' alors que les caracteres sont frequemment different...
un exemple
Modifié par ramy (16 Mar 2006 - 00:05)
un exemple
Modifié par ramy (16 Mar 2006 - 00:05)
je viens d'analyser la page de validation,
si tu coches la case "Show Source" et que tu re-valide tu remarque que le caractère incriminé se trouve dans la phrase "[...] lIncertitude [...]" entre le "L" minuscule et le "I" majuscule, or, lorsqu'on lit il n'y a rien...
Cela provient tout simplement du fait que le codage des caractères de la source de ce texte n'est pas le même que le codage du document qui l'affiche (ta page web)
il faudrait que tu puisse déterminer le codage des caractères de la source des données afin de les traduire au mieux les codes de caractères, de plus, n'oublie pas d'encoder les caractères spéciaux en entités HTML par la suite.
Pour traduire les chaines d'un jeu de caractère en un autre tu peux utiliser :
- iconv (avec la lib iconv installée, mais je ne crois pas que chez free elle y soit)
- les fonction mb( chaines de caratère smulti octets) et je crois que mb est installé sur free.
Je rejoint donc jcm sur le fait qu'il n'y ait pas besoin de regexp ici mais ça ne provient pas d'un pb de balises.
si tu coches la case "Show Source" et que tu re-valide tu remarque que le caractère incriminé se trouve dans la phrase "[...] lIncertitude [...]" entre le "L" minuscule et le "I" majuscule, or, lorsqu'on lit il n'y a rien...
Cela provient tout simplement du fait que le codage des caractères de la source de ce texte n'est pas le même que le codage du document qui l'affiche (ta page web)
il faudrait que tu puisse déterminer le codage des caractères de la source des données afin de les traduire au mieux les codes de caractères, de plus, n'oublie pas d'encoder les caractères spéciaux en entités HTML par la suite.
Pour traduire les chaines d'un jeu de caractère en un autre tu peux utiliser :
- iconv (avec la lib iconv installée, mais je ne crois pas que chez free elle y soit)
- les fonction mb( chaines de caratère smulti octets) et je crois que mb est installé sur free.
Je rejoint donc jcm sur le fait qu'il n'y ait pas besoin de regexp ici mais ça ne provient pas d'un pb de balises.
Bonjour,
Le codage de caractere de la page source est également ISO-8859-1. Je l'ai testé avec le validateur : Si le probleme de caracteres n'apparait en effet pas, je doute de la qualité de cette essai puisque qu'on compte pret de 200 erreurs sur la page...
Une difference nottable est l'absence de déclaration de langue. Je vais chercher dans ce sens.
l'absence de déclaration de langue supprime quelques erreur mais pas les non sqml caracters 146...
Modifié par ramy (17 Mar 2006 - 09:17)
Le codage de caractere de la page source est également ISO-8859-1. Je l'ai testé avec le validateur : Si le probleme de caracteres n'apparait en effet pas, je doute de la qualité de cette essai puisque qu'on compte pret de 200 erreurs sur la page...
Une difference nottable est l'absence de déclaration de langue. Je vais chercher dans ce sens.
l'absence de déclaration de langue supprime quelques erreur mais pas les non sqml caracters 146...
