|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre habitué
![]() Inscription : septembre 2004 Messages : 244 ![]() |
Bonjour,
J'ai le texte ci-dessous, où sous certaines conditions je voudrais supprimer les images Je les mais dans un 1er temps dans un tablea via Code :
preg_match_all('#<img.*?>#',$contents,$bob); Code :
Code :
Merci beaucoup |
||||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
ton expression n'est pas bonne, pour manipuler du html c'est avec DOMDocument, et pas la peine d'utiliser une boucle for pour parcourir un tableau foreach est la pour ca
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Eric GaridacciInscription : septembre 2005 Messages : 1 057 ![]() |
Salut,
Dans la fonction preg_replace(), $bob[0][$i] sera considéré comme une chaine contenant un pattern devant être intérpreté par le moteur d'expressions rationnelles. Il faut donc utiliser la fonction str_replace(). Normalement, le résultat doit se trouver dans $content Code :
$content = str_replace($bob[0][$i], '', $contents); Code :
$toto = str_replace($bob[0][$i], '', $contents);
__________________
N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ... |
|
|
00
|
|
|
#4 | ||
|
Membre habitué
![]() Inscription : septembre 2004 Messages : 244 ![]() |
Merci l modification par
Code :
$content = str_replace($bob[0][$i], '', $contents); Par contre est-ce que quelqu'un pourrait me confirmer que mon expression reguliere est bonne, stealh35 me fait douter. En tout cas la capture semble bien se faire : Code :
|
||
|
|
00
|
|
|
#5 | ||
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
non enfaite c'etait bon par contre la methode n'est pas la bonne tu complique les chose avec les regex, DOMDocument est la pour ca
si tu veux supprimer les images d'une source html c'est Code :
__________________
http://blog.stealth35.com/ |
||
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : septembre 2004 Messages : 244 ![]() |
J'ai testé la solution "dom", mais cela ne marche pas dans mon cas, je traite un fichier texte que j'ai généré moi même, rien a voir avec une page dom
le problème c'est que veut pas systématiquement supprimer les images. Mon but est de les récupérer dans un tableau, afin de contrôler leur largeur. Si largeur supérieur à X , alors je supprime. Est-ce qu'avec cette expression je capture systématiquement toutes les images présentent dans un document ? |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Eric GaridacciInscription : septembre 2005 Messages : 1 057 ![]() |
En fait, il est préférable d'ajouter l'option i...
Afin de prendre en compte les éventuelles balises où la nom de la balise img serait partiellement ou totalement écrit en majuscules.
__________________
N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ... |
|
|
00
|
|
|
#8 | |||
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
Citation:
Code :
qu'est ce qui marche pas ? y'a un message d'erreur ?
__________________
http://blog.stealth35.com/ |
|||
|
|
00
|
|
|
#9 | |||||
|
Membre habitué
![]() Inscription : septembre 2004 Messages : 244 ![]() |
Citation:
Ca va être plus simple avec un exemple concret : Code :
Si cela marchait, cela ne devrait t'il pas me renvoyer les caractèristiques des images et leur taille ? |
|||||
|
|
00
|
|
|
#10 | ||
|
Membre régulier
![]() Inscription : juin 2004 Messages : 66 ![]() |
Attention "$bob[0][$i]" est évalué comme une expression régulière !
Imagine ce que donne : Code :
preg_replace("<img title=\"imagea\" alt=\"titrea\" src=\"http://www.ddddd.fr/images/stories/Articles/ddddddddddddddddddddddddddd.jpg\" width=\"229\" height=\"282\" />", '', $contents); Bref, pas étonnant que cela ne fonctionne pas. Quand tu utilises une variable en tant qu'expression, pense à utiliser preg_quote afin d'échapper tous les caractères d'expression. Ceci devrait probablement fonctionner : Code :
preg_replace('#'.preg_quote($bob[0][$i]).'#', '', $contents); Code :
__________________
Programmation Web - PHP, MySQL, JavaScript, etc. |
||
|
00
|
|
|
#11 | ||
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
donc la si tu veux faire du propre, tu fais un petit table du sqlite ca devrait allé en temporaire, tu fais des requêtes sur tes champs HTML et tu récupères le DOM, tu supprimes les images tu fais un update, ensuite un dump final
sinon en mode bidouille c'est avec preg_replace_callback Code :
__________________
http://blog.stealth35.com/ |
||
|
|
00
|
|
|
#12 | |||
|
Membre habitué
![]() Inscription : septembre 2004 Messages : 244 ![]() |
Citation:
J'avoue avoir du mal a comprendre l'expression reguliere Si la decoupe : <img => chaine débutant par <img \" => je protège le guillemet [^>]* => cela signifie n'importe quel caractere ne se terminant pas par ">" ??? (?P<url>.*?) => la je comprend rien !!!!!!! |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com