|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||||
|
Membre régulier
![]() Inscription : novembre 2002 Messages : 310 ![]() |
Bonjour
J'ai un fichier contenant un tas de lignes avec diverses informations et dans une de ces lignes, il y a l'url d'un site. ça donne ça en gros : Citation:
J'ai essayé en faisant ça : Code :
afin que ça s'arrête au premier espace trouvé (\s) mais lorsque j'affiche $tableau[1], il s'arrête au premier s trouvé Voici mon code complet : Code :
|
|||||
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Inscription : novembre 2002 Messages : 310 ![]() |
Salut
je connais bien cette fonction mais je pensais qu'un regex pouvait faire ça, ça évite de faire une boucle si ce n'est pas possible, je l'utiliserai merci en tout cas |
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() |
Effectivement! J'ai effacé mon message car l'utilisation d'une boucle avec strpos() n'est pas la meilleure solution je suppose... En plus tu devras trouver l'espace de la fin de l'url pour délimiter cette-dernière... Donc ça fait un strpos() sur "http://" plus un autre pour l'espace de fin... Essaye de trouver une solution plus simple si possible. Bon courage, à+
|
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : novembre 2002 Messages : 310 ![]() |
merci
c'est justement cet espace que je n'arrive pas à mettre, pourtant \s signifie bien espace mais ça ne fonctionne pas; je vais continuer à faire des essais |
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() |
Le caractère #0 peut-être présent dans un fichier, mais invisible à l'affichage.
Il peut fausser la recherche dans certains cas. Quoiqu'il en soit, l'espace = chr(32). Peut-être peux-tu l'utiliser dans ton code... |
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : novembre 2002 Messages : 310 ![]() |
Ca y est presque
grace à toi ça affiche : "://www.monsite.com/index.php?sid=blabla&topic=45 texte texte", bizarre qu'il se soit pas arrêté au premier espace |
|
|
00
|
|
|
#7 | ||
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
La bibliothèque des expressions régulières pcre est recommandée pour sa rapidité et la possibilité d'utiliser des options.
Je ferais ceci : Code :
[^\s] est une classe de négation de caractères (tout caractère sauf l'espace \s) * 0 ou plus i est une l'option "insensible à la casse" (au cas où tu aurais HTTP://...) Pour ton expression, il me semble que \s ne soit pas supporté par les regex posix. Il prendra donc le caractère s (échappé par \). Si tu tiens vraiment aux regex posix essaye [^[:space:]] pour remplacer [^\s]
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
||
|
|
00
|
|
|
#8 | ||||
![]() ![]() ![]() Inscription : septembre 2002 Messages : 1 591 ![]() |
Citation:
Citation:
pour rechercher toutes les occurrences d'URL trouvées dans la chaîne. |
||||
|
|
00
|
|
|
#9 | ||||
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
Citation:
Ceci dit, tu as raison, les traitements de chaîne sont plus rapides, mais bonjour la galère pour tenir compte de la casse, des césures et autres alternations.... Tu peux en effet t'en tirer avec des strpos ou stripos (php5) mais quid si il y a dans le texte d'autres mots avec 'http' comme Citation:
Citation:
Citation:
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
||||
|
|
00
|
|
|
#10 | ||
|
Membre régulier
![]() Inscription : novembre 2002 Messages : 310 ![]() |
Je vous remercie, c'est très sympa de m'avoir aidé !
Ca fonctionne parfaitement maintenant, c'est bien plus simple qu'avec strpos/substr/strlen Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com