[PHP] comment effacer tous ce qui se trouve entre deux caratcères ?

comment effacer tous ce qui se trouve entre deux caratcères ? [PHP] - Programmation

Marsh Posté le 06-03-2001 à 16:56:05    

J'aurais besoin de connaitre la syntaxe pour la fonction ereg_replace qui permet d'effacer tous les caractères qui se trouvent entre deux caractères, par exemple je voudrais effacer tout se qui se trouve entre <HTML> et </HEAD>
 
Je précise que la fonction strip_tags ne fonctionne pas sur ma version de PHP.
 
J'ai essayé ça :  
 
$result = ereg_replace('<HTML>([^>]|\n)*</HEAD>', '', $result);
 
mais ça marche pas, surtout j'y comprends rien à cette syntaxe à la con, ça veux dire quoi ([^>]|\n)* ?? si quelqu'un pouvait me détailler ça serait cool. J'aurais bien aimais un truc simple comme ça <HTML>*</HEAD> où * remplace tous les autres caractères.

 

--Message édité par duch--


---------------
Webmaster du site de l'Île-Saint-Denis : http://www.lile-saint-denis.fr
Reply

Marsh Posté le 06-03-2001 à 16:56:05   

Reply

Marsh Posté le 06-03-2001 à 17:12:23    

Notez que j'arrive à virer les commentaires de cette façon là :  
 
$result = ereg_replace('<!([^>]|\n)*>', '', $result);
 
 
autre exemple : cette ligne vire toutes les balises saufs les blaises <a> et </a>
 
$str = ereg_replace('<([^/a]|([/][^a]))([^>]|\n) *>', '', $str);
 
 
J'comprends un peu mieux avec ça mais ça reste encore hérmétique comme syntaxe.


---------------
Webmaster du site de l'Île-Saint-Denis : http://www.lile-saint-denis.fr
Reply

Marsh Posté le 06-03-2001 à 17:57:52    

Il faut que tu te tapes la doc sur les expressions régulières gérées par PHP.

Reply

Marsh Posté le 06-03-2001 à 18:32:09    

utilise les fonctions régulières compatibles perl c'est bcp plus efficace !
Aussi, pour les exemples que t'as donné, tu devrais plutot mettre eregi_replace, pour supprimer la sensibilité à la casse (ça peut être <A> ou <a> tes balises !)
 
Pour ta 1e question, ça devrait peut être marcher avec un truc comme ça (même si je suis pas vraiment spécialiste des REGEX...)
 
$truc = preg_replace("|<HTML>(.*?)</HEAD>|si","",$truc);
 
J'espère que ça marchera... :)

 

--Message édité par M@nu--

Reply

Marsh Posté le 06-03-2001 à 19:00:31    

Merci pour le tuyau M@nu mais en fait j'vais faire autrement.
 
 
sinon il me reste encore un blème, comment qu'on crée un tableau dynamiquement ??
 
un tableau du genre
 
contenu = array ("contenu1"=>"texte1","contenu2"=>"texte2"...)
 
Sachant que contenu1 et contenu2 sont des variables (de même que texte1 et texte2 bien sûr). J'y crois pas y'a 12000 fonctions avec les tableaux mais y'a pas de fonction Add !!!

 

--Message édité par duch--


---------------
Webmaster du site de l'Île-Saint-Denis : http://www.lile-saint-denis.fr
Reply

Marsh Posté le 06-03-2001 à 21:19:02    

Personnellement je préfère utiliser cette méthode pour créer des tableaux :
 
$tableau["contenu1"] = "texte1";
$tableau["contenu2"] = "texte2";
 
ça revient au même mais c'est plus clair
Après rien ne t'empêche de mettre des variables partout !! (pour le créer dynamiquement ton tableau) même le nom du tableau peut être une variable (tu mets $$machin["truc"], le nom de ton tableau est alors le contenu de la variable $machin, c'est des "variables variables" )
 
Après pour parcourir ton tableau à partir du début tu fais comme ça :
 
reset($tableau);
while (list($contenu,$texte) = each($tableau))
{
    //instructions pr chaque élément
}
autrement t'as plein de fonctions pour te placer dans tn tableau

Reply

Marsh Posté le 07-03-2001 à 10:08:40    

Pour la création du tableau j'avais essayé comme ça mais ça avait pas l'air de marcher, bon j'vais réessayé.


---------------
Webmaster du site de l'Île-Saint-Denis : http://www.lile-saint-denis.fr
Reply

Marsh Posté le 07-03-2001 à 10:43:57    

Merci M@nu, pour les tableaux ça marche, allez une ch'tite dernière :
 
peut on avec les REGEX extraire une chaine qui se trouve entre deux caractères prédefinis, exemple :  
 
@["machin",12,10,0]
 
j'aimerais extraire machin de cette chaine, comment kon fait?
 
Jai réussi à le faire de cette manière là, mais je trouve pas ça élégant :  
 
$limiteg = "@["";
$limited = """;
$line = strstr($line, $limiteg);
$line = substr($line, strlen($limiteg), strlen($line));
$line = substr($line, 0, strpos($line, $limited));
 
où $line = "@["machin",12,10,0]"


---------------
Webmaster du site de l'Île-Saint-Denis : http://www.lile-saint-denis.fr
Reply

Marsh Posté le 07-03-2001 à 15:09:32    

ça devrait marcher comme ça :
 
$truc = preg_replace("|@\["(.*?)",12,10,0\]|si",\\1,$truc)
 
Si tu veux tout savoir sur les REGEX tu peux aller voir ici :
http://www.phpinfo.net/?p=articles&rub=regex
 
Bon, mais celles compatibles perl (preg_...) ne sont pas expliquées...
déjà si tu comprends la syntaxe...

Reply

Marsh Posté le 08-03-2001 à 10:05:16    

Merci opur le lien M@nu, c'est super cool, j'vais enfin pouvoir comprendre à quoi servent ce putains de ^$* et autres.


---------------
Webmaster du site de l'Île-Saint-Denis : http://www.lile-saint-denis.fr
Reply

Marsh Posté le 08-03-2001 à 10:05:16   

Reply

Marsh Posté le 08-03-2001 à 18:10:26    

C'est clair, c'est un peu dur à comprendre au début, mais c'est vraiment très utile et bien plus rapide que tout le reste...
(tu peux les utiliser partout, pas seulement dans les fonctions du style ereg()...)
Un conseil, vas voir tous les exemples qu'ils donnent à la fin, et si tu les comprends tous, alors c'est bon ! :)

Reply

Marsh Posté le 08-03-2001 à 18:13:33    

Autrement un autre lien qui est peut être un peu plus complet pour certains trucs : http://www.commentcamarche.net/php/phpreg.php3
 
Un truc super important de cette dernière page, c'est le tableau où ils donnent les codes pour les espaces et autres (du genre [:space:],[:digit:] etc...)

Reply

Marsh Posté le 08-03-2001 à 18:39:58    

:love:


---------------
Webmaster du site de l'Île-Saint-Denis : http://www.lile-saint-denis.fr
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed