Remplacer tous les & saufs certains. [php - regex] - PHP - Programmation
Marsh Posté le 06-12-2003 à 10:04:55
T'as essayé htmlentities() ?
Marsh Posté le 06-12-2003 à 13:22:15
Oui, en fait certains navigateurs me renvoient le signe euro de manière correcte en &xxxx; j'ai oublié le numméro . Et htmlentities remplace tous les & par et &. Ce que je veux faire c'est un remplacement sélectif qui ne remplace pas les & suivis de quelques chiffres et de ;.
Marsh Posté le 06-12-2003 à 13:30:19
oui, on peut le voir comme ça
En fait c'est pas le cas mais si tu as une slouce avec 4, je prends
Marsh Posté le 06-12-2003 à 13:41:40
En fait ce qu'il faut absolument pour le faire avec une expression régulière c'est le format exact que peut avoir ta chaîne
Par 'exact' j'entends toutes les formes pour lesquelles tu veut faire une correspondance
Marsh Posté le 06-12-2003 à 13:42:57
Ca c'est pas un problème. Ma question est de dire par exemple: tu me remplace tous les & sauf ceux suivis de 4 chiffres
Marsh Posté le 06-12-2003 à 13:52:11
Code :
|
ça devrait le faire avec ça.
Marsh Posté le 06-12-2003 à 13:54:34
Saleté, mon livre qui parle des regexp est un peu court . Merci, je vais chercher de comprendre la doc qui explique le ?!, je suppose que c'est pour nier ce qu'il y a entre ()
Marsh Posté le 06-12-2003 à 13:59:15
c?est une assertion positive. Littéralement, mon regexp signifie:
remplace toutes les éperluettes qui ne sont pas suivies de lettres, chiffres ou du dièze (caractères qui composent les entités définies dans le (x)html, les entités numériques ou héxadécimales) puis d?un point virgule.
il y en a quatre:
assertion positive: pattern(?=sub-pattern) - doit être suivi de
assertion négative: pattern(?!sub-pattern) - ne doit pas être suivi de
assertion arrière positive: (?<=sub-pattern)pattern - doit être précédé de
assertion arrière négative: (?<!sub-pattern)pattern - ne doit pas être précédé de
Voilou
Marsh Posté le 06-12-2003 à 14:05:32
(Désolé, je suis un peu perfectionniste)
C?est plus stricte comme ça:
Code :
|
Par contre, je suis pas sur pour le minimum et maximum de chiffres (et lettres) dans le cas d?une entité numérique (ou héxadécimale).
Marsh Posté le 06-12-2003 à 14:16:21
Voilà ce que j'ai fait .
|
Je traiterai eventuellement le cas des € mais je n'ai jamais vu de navigateurs envoyant celà .
Je n'ai plus qu'à remplacer les caractères ? windows par une entité valide .
Marsh Posté le 06-12-2003 à 14:25:34
Oups, je n'avais pas vu que tu avais posté avant moi. . Je pensais faire un truc comme tu l'as fait. Merci de me découper le travail de la sorte .
Marsh Posté le 06-12-2003 à 14:28:02
Maintenant que je regarde ton truc, je trouve que ça manque de parenthèses .
Voilà ma dernière version :
|
.
Celà dit j'hésite à inclure les &euros et autres comme je l'ai fait.
Marsh Posté le 06-12-2003 à 00:34:05
VOilà, je veux remplacer tous les & par des & sauf les & suivis de chiffres et de ; . Ex &1256;.
Je sais comment nier une classe [^0-9] mais ça ne m'avance pas.
J'ai pensé à remplacer d'office tous les "&" en et "&" et par après remplacer les "&[0-9]?;" par la même chose avec un simple &.
N'y a-t-il pas plus efficace.