Suprimer des balises html <> avec des regex - PHP - Programmation
Marsh Posté le 07-05-2006 à 17:14:45
substr ...
edit : si tu fais ca dans le but de t'entrainer aux regex alors :
preg_replace('#^table-([0-9]+-.*)$#i', '$1', 'table-106-client')
Marsh Posté le 14-05-2006 à 03:35:14
oui c'est surtout pour m'entrainer.
nop substr ne suffit pas ....
comme tu l'as bien spécifier [0-9]+ => au moins 1 caractère de 0 à 9. Ca peut etre un nombre de 1 chiffre à n.
C'est pas possible avec un substr, parce que l'on donne la position de départ et la longeur. C'est figé. A la rigueur un explode ("-","table-106-client'" ) peut etre pas mal.
Question :
pourquoi as tu mis des # ?
Marsh Posté le 14-05-2006 à 11:41:21
Bon, j'ai d'autre questions. Je souhaiterais supprimer toutes mes balises html d'une chaine de caractères php ....
Pour mes tests, je remplace les < > par ( ) pour voire si cela a bien été retiré.
$test = "(span classe='tetetet') kjsdhfjksdfh (/span)";
|
tout a été effacé. C'est un normal car j'ai spécifié dans le motif, n'importe quel caractères, .*, apres une premiere (, il a donc pris en compte aussi la prenthèse fermante ). Le motif ne s'est pas arrété a la première ).
J'ai donc été plus restrictif : uniquement des alphanumériques entre les parenthèses :
$test2 = preg_replace ('(\((/)?[[:alnum:]]*\))', '', $test); |
ma première balise n'a pas été pris en compte à cause des ' par contre la 2ème (/span) a bien été prise en compte.
Comment faire ?
j'ai essayé avec ([\'\"=][[:alnum:]])* mais cela ne fonctionne pas.
$test2 = preg_replace ('(\((/)?([\'\"=[[:alnum:]]])*\))', '', $test); |
Marsh Posté le 14-05-2006 à 21:58:45
un petit up.
Je suis sur que pour certain d'entre vous, cela ne doit pas etre bien compliqué.
Marsh Posté le 14-05-2006 à 22:25:45
[[:alnum:]] ne contient pas le caractère d'espacement.
#\([^\)]*\)# devrait faire ce que tu veux (pose des questions si tu ne comprends pas).
(Et pour répondre à ta question plus haut, le # est un caractère qu'il faut mettre en début et en fin de masque, mais qui peut être n'importe quel autre caractère. Ceci dit en encadrant de parenthèses comme tu as fait il me semble que c'est bon aussi.)
Marsh Posté le 07-05-2006 à 13:42:19
voila, j'aimerais pouvoir supprimer un ensemble de caractère :
la chaine de caractère table-,
suivi d'un nombre
suivi de -
cette sous chaine à supprimer est au dbut de la chaine.
exemple :
table-106-client ====> 106-client
j'ai essayé ca
mais j'ai une belle erreur ...
je m'explique comment je raisonne ....
je recherche un ensembre de caractère (table-) puis de chiffres [:digit:] puis le caractère (-)
ces 3 sous ensemble forment un ensemble ((table-)[:digit:](-))
et celui ci doit etre au début de chaine
^((table-)[:digit:](-))
Message édité par weed le 14-05-2006 à 11:44:00