Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/05/2011, 12h11   #1
Futur Membre du Club
 
Inscription : mai 2007
Messages : 115
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 115
Points : 19
Points : 19
Par défaut Découper une chaine

Bonjour à tous,

j'aimerais découper cette chaîne :
Code :
<image id="0">0169120000000805T01.JPG</image><image id="1">0169120000000805T02.JPG</image><image id="2">0169120000000805T03.JPG</image><image id="3">0169120000000805T04.JPG</image><image id="4">0169120000000805T05.JPG</image>
et obtenir :
Citation:
0169120000000805T01.JPG,0169120000000805T02.JPG,0169120000000805T03.JPG,0169120000000805T04.JPG,0169120000000805T05.JPG
Voila ce que je fais :

Code :
1
2
3
4
5
6
 
$search = '/<image id="[0-9]+">/';
$chaine = preg_replace($search,',',$chaine);
 
// résultat
0169120000000805T01.JPG</image>,0169120000000805T02.JPG</image>,0169120000000805T03.JPG</image> ...
mais comment enlever le </image> ?
merci
totofe49 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/05/2011, 12h52   #2
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
preg_match_all() conviendrait mieux.

Code php :
1
2
3
4
5
<?php
$chaine = '<image id="0">0169120000000805T01.JPG</image><image id="1">0169120000000805T02.JPG</image><image id="2">0169120000000805T03.JPG</image><image id="3">0169120000000805T04.JPG</image><image id="4">0169120000000805T05.JPG</image>';
$pattern = '#<image id="[0-9]+">(.*)</image>#U';
preg_match_all($pattern,$chaine,$results);
var_dump($results[1]);
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/05/2011, 15h25   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
pour parser du XML c'est SimpleXML ou DOMDocument
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/05/2011, 16h47   #4
Membre régulier
 
Inscription : juillet 2007
Messages : 62
Détails du profil
Informations personnelles :
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juillet 2007
Messages : 62
Points : 82
Points : 82
Vois plus large. Ton pattern peut être générique. Pour supprimer n'importe quel balise utilise ça :
Code :
$search = '@<[^>]*>@i';
Code :
1
2
3
4
5
6
7
8
9
$str = '<image id="0">0169120000000805T01.JPG</image><image id="1">0169120000000805T02.JPG</image><image id="2">0169120000000805T03.JPG</image><image id="3">0169120000000805T04.JPG</image><image id="4">0169120000000805T05.JPG</image>' ;
$search = '@<[^>]*>@i';
$chaine = preg_replace( $search,',', $str);
// le resultat 
// ,0169120000000805T01.JPG,,0169120000000805T02.JPG,,0169120000000805T03.JPG,,0169120000000805T04.JPG,,0169120000000805T05.JPG,
// donc un peu de nettoyage
echo str_replace( ',,', ',', trim( $chaine,','));
// resultat
// 0169120000000805T01.JPG,0169120000000805T02.JPG,0169120000000805T03.JPG,0169120000000805T04.JPG,0169120000000805T05.JPG
kodeya est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/05/2011, 16h52   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par kodeya Voir le message
Vois plus large. Ton pattern peut être générique. Pour supprimer n'importe quel balise utilise ça :
Code :
$search = '@<[^>]*>@i';
moi je refais pas la roue et j'utilise strip_tags
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/05/2011, 17h12   #6
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
Citation:
Envoyé par transgohan Voir le message
Code :
$pattern = '#<image id="[0-9]+">(.*)</image>#U';
Pourquoi utiliser un modifier quand l'expression régulière peut gérer l'ungreedy ?
Code :
$pattern = '#<image id="[0-9]+">(.*?)</image>#';
exemple

Mais, j'aurais dit comme stealth quand j'ai vu les balises :
Citation:
Envoyé par stealth35 Voir le message
pour parser du XML c'est SimpleXML ou DOMDocument
et :
Citation:
Envoyé par stealth35 Voir le message
moi je refais pas la roue et j'utilise strip_tags
2 +1 pour toi
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/05/2011, 18h04   #7
Membre régulier
 
Inscription : juillet 2007
Messages : 62
Détails du profil
Informations personnelles :
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juillet 2007
Messages : 62
Points : 82
Points : 82
strip_tags c'est good

Bien sur, il y a plusieurs solutions. Chaqu'un a ces petites habitudes.

Utiliser les fonctions xml (simplexml ou autre ) avec html c'est pas génial. Html est souvent mal codé. Les balises ne sont pas fermées correctement. Ce qui fait planter les parseurs xml. xhtml strict c'est autre chose.

Alors pour quoi pas un bon veux regexp sur html surtout si on travaille sur un bout du code et pas sur le document en entier ?
kodeya est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/05/2011, 18h15   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par kodeya Voir le message
Bien sur, il y a plusieurs solutions. Chaqu'un a ces petites habitudes. strip_tags c'est good

Utiliser les fonctions xml (simplexml ou autre ) avec html c'est pas génial. Html est souvent mal codé. Les balises ne sont pas fermé correctement. Ce qui fait planter les parseurs xml. xhtml strict c'est autre chose.

Alors pour quoi pas un bon veux regexp sur html surtout si on travaille sur un bout du code et pas sur le document en entier ?
parce que c'est pas fait pour et que même si c'est mal codé DOMDocument va quand même parser le HTML. Faut pas confondre non plus XML et HTML c'est 2 choses différentes, DOMDocument est un parseur de DOM (donc pas exclusivement XML)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 18h15   #9
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Citation:
Utiliser les fonctions xml (simplexml ou autre ) avec html c'est pas génial. Html est souvent mal codé. Les balises ne sont pas fermé correctement. Ce qui fait planter les parseurs xml. xhtml strict c'est autre chose.
C'est pour ça qu'il existe Strict Error Checking: http://www.php.net/manual/en/class.d...terrorchecking
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 09/05/2011, 18h17   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par Benjamin Delespierre Voir le message
C'est pour ça qu'il existe Strict Error Checking: http://www.php.net/manual/en/class.d...terrorchecking
c'est plutôt libxml_use_internal_errors
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 18h42   #11
Membre régulier
 
Inscription : juillet 2007
Messages : 62
Détails du profil
Informations personnelles :
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juillet 2007
Messages : 62
Points : 82
Points : 82
Citation:
même si c'est mal codé DOMDocument va quand même parser le HTML.
Merci stealth35. je vais regarder DOMDocument . S'il parse n'importe quel html ça va me faciliter la vie. C'est bon à savoir
kodeya est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/05/2011, 08h13   #12
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
Citation:
Envoyé par Shikiryu Voir le message
Pourquoi utiliser un modifier quand l'expression régulière peut gérer l'ungreedy ?
Parce que je suis sous PHP 5.0.5 et que je n'ai lu nulle part qu'avec les versions plus récentes c'était géré de base. Mais j'aurai appris quelque chose d'intéressant. ^^
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 10/05/2011, 10h15   #13
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
Citation:
Envoyé par transgohan Voir le message
Parce que je suis sous PHP 5.0.5 et que je n'ai lu nulle part qu'avec les versions plus récentes c'était géré de base. Mais j'aurai appris quelque chose d'intéressant. ^^
Rien à voir avec la version de PHP, je ne parle que d'expression régulière pour ceci .
Les métacaractères des regex ont "toujours" existé non ?
0 ou plusieurs caractères et greedy. (un max de caractère avant le prochain token)
0 ou plusieurs caractères et ungreedy. (s'arrête dès la 1ère rencontre du prochain token
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 10/05/2011, 10h47   #14
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
Oh je n'avais pas vu la petite subtilité.
Merci pour cette astuce !
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h05.


 
 
 
 
Partenaires

Hébergement Web