Page 1 sur 2

[R] Récuperer un lien dans une variable

Posté : dim. 19 févr. 2012 02:42
par yagonfstm91
Bonjour !

Voila j'ai une variable qui contient :
► Afficher le texte
Et j'aimerais récupéré ceci :

Code : Tout sélectionner

http://yagoupload.fr.nf/thumbs/test.png
Ou cela :

Code : Tout sélectionner

/images/test.png
Je suis sur qu'il faut utiliser les fonctions "String" mais je suis vraiment nul avec !

Merci

Edit : J'ai réussis de la manière suivante :

Code : Tout sélectionner

    $sResponse = StringSplit($sResponse, "]")
    $lienyagoupload = $sResponse[7]
    $lienyagoupload = StringReplace($lienyagoupload, "[/img", "")
    $lienyagoupload = StringReplace($lienyagoupload, "thumbs", "images")
Mais doit surement y avoir plus simple.

Re: [..] Récuperer un lien dans une variable

Posté : dim. 19 févr. 2012 09:17
par TopXm
Salut,
Hum en fait je suis passé par un StringRegExp
► Afficher le texteRecup URL du site et le dossier de l'image
ça te convient ?

Re: [..] Récuperer un lien dans une variable

Posté : dim. 19 févr. 2012 11:42
par mikell
Si c'est juste pour l'image, ya aussi ça

Code : Tout sélectionner

$nfile = FileOpen('mypage.txt')     ;J'ai collé le code source dans un fichier pour tester
$nBuf = FileRead($nfile)
FileClose($nfile)
Msgbox(0,"", StringRegExpReplace($nBuf, '(?s).+img src="([^"]+).+', "$1") )

Re: [..] Récuperer un lien dans une variable

Posté : dim. 19 févr. 2012 15:02
par yagonfstm91
Ca marche Merci ! :D

Re: [R] Récuperer un lien dans une variable

Posté : mer. 22 févr. 2012 16:53
par yagonfstm91
Hum parfois il arrive que ca me retourne ca :

Code : Tout sélectionner

http://YagoUpload.fr.nfHTTP/1.1 200 OK
Date: Wed, 22 Feb 2012 15:44:46 GMT
Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_perl/2.0.5 Perl/v5.8.8
X-Powered-By: PHP/5.3.6
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=c71a7b30eb197efe1b7b5f2fd102d41f; path=/
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html

b3




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="
2
fr
8
" lang="
 
:?

Re: [..] Récuperer un lien dans une variable

Posté : mer. 22 févr. 2012 18:21
par Iste
Ca manque de "?" !
Essayez avec '(?s).+img src="([^"]+?).+' en regexp

Re: [..] Récuperer un lien dans une variable

Posté : mer. 22 févr. 2012 23:07
par mikell
@Iste
'(?s).+img src="([^"]+?).+'
Pas bon, dans ce cas le non-gourmand ne fait retourner que le 1er caractère (non-guillemet) après la marque de début (img src=") ^^
la négation-plus est précisément une alternative économe au plus-non-gourmand (.+?)

Re: [..] Récuperer un lien dans une variable

Posté : mer. 22 févr. 2012 23:38
par Iste
Ha uai c'est pas faux, j'ai reconnu le probleme et ai essayé de coller la solution habituelle, mais qui ne convient pas dans ce cas ^^'
Pour ça que ça me semblait étrange :o

Bon bah on peut ajouter l'espace a la négation alors.
Mais le plus sur pour l'avenir du future, serait de lister tout les caractères possibles qui sont bien moins nombreux que ceux impossibles ! (pour le moment)

Re: [..] Récuperer un lien dans une variable

Posté : jeu. 23 févr. 2012 12:18
par yagonfstm91
Euh d'accord merci donc je met quoi du coup ?

Re: [..] Récuperer un lien dans une variable

Posté : jeu. 23 févr. 2012 16:44
par mikell
Humpf sans code ni lien à tester, on répond quoi ?
Chez moi l'exemple précédent marche, mais tu peux aussi essayer ça

Code : Tout sélectionner

$nfile = FileOpen('mypage.txt')     ;J'ai collé le code source dans un fichier pour tester
$nBuf = FileRead($nfile)
FileClose($nfile)
Msgbox(0,"", StringRegExpReplace($nBuf, '(?s)(.+?)img src="(.+?)".+', "$2") )

Re: [..] Récuperer un lien dans une variable

Posté : ven. 24 févr. 2012 08:05
par yagonfstm91
Merci je vais essayer.

Voici donc la fonction complète :

Code : Tout sélectionner

Func _UploadTo_yagoupload($sFile, $iRet_Type = 0)
    $sLocalFile = $sFile ;Local file
    $sHost = 'http://yagoupload.fr.nf' ;Upload page addresss
    $sFormAction = '/' ;Upload form action ("form action=...upload.php)"
    $sFormName = 'fileup' ;Upload form name ("input name=uploadfile")

    $sResponse = _TCPFileUpload($sLocalFile, $sHost, $sFormAction, $sFormName)

    FileWrite("mypage.txt", $sResponse)
    $nfile = FileOpen('mypage.txt')
    $nBuf = FileRead($nfile)
    FileClose($nfile)
    FileDelete("mypage.txt")
    $lienyagoupload = StringRegExpReplace($nBuf, '(?s)(.+?)img src="(.+?)".+', "$2")
    $lienyagoupload = "http://YagoUpload.fr.nf"&$lienyagoupload


    Return $lienyagoupload
EndFunc

Re: [..] Récuperer un lien dans une variable

Posté : ven. 24 févr. 2012 17:43
par yagonfstm91

Code : Tout sélectionner

StringRegExpReplace($nBuf, '(?s)(.+?)img src="(.+?)".+', "$2")
Hum sa me retourne le logo du site,c'est pas ce que je veux :?

Code : Tout sélectionner

http://YagoUpload.fr.nf/site-img/logo.png
:|

D'ailleurs pourquoi passer par un txt ?

Code : Tout sélectionner

    $lienyagoupload = StringRegExpReplace($sResponse, '(?s).+img src="([^"]+).+', "$1")
    $lienyagoupload = "http://YagoUpload.fr.nf"&$lienyagoupload
Ca marche aussi

Re: [..] Récuperer un lien dans une variable

Posté : ven. 24 févr. 2012 21:53
par mikell
[quote="yagonfstm91"]

Code : Tout sélectionner

Hum sa me retourne le logo du site,c'est pas ce que je veux  [/quote]Bon OK, mais retrouver une image dans un code se fait par des balises, des repères, etc, et dans ta page comme repère pour les images, on trouve :
img src="
image" src="
img src=
id_div_2.src=
Alors il suffit de choisir le bon ^^

Re: [..] Récuperer un lien dans une variable

Posté : sam. 25 févr. 2012 12:07
par yagonfstm91
Je viens de faire avec ca :

Code : Tout sélectionner

    $lienyagoupload = StringRegExpReplace($sResponse, '(?s).+href="/images([^"]+).+', "$1")
    $lienyagoupload = "http://YagoUpload.fr.nf/images"&$lienyagoupload
ca a l'air de macher

edit : ah bah non, il arrive encore que parfois ca me retourne

Code : Tout sélectionner

http://YagoUpload.fr.nf/imagesHTTP/1.1 200 OK
Date: Sat, 25 Feb 2012 00:00:24 GMT
Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_perl/2.0.5 Perl/v5.8.8
X-Powered-By: PHP/5.3.6
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=2f5f91d437b9752e106e670ebecbaaa4; path=/
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html

b3




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="
2
fr
8
" lang="
 
Le probleme doit venir d'ailleurs...

edit : Comment afficher un message d'erreur si $lienyagoupload retourne le mauvais code ?

Re: [..] Récuperer un lien dans une variable

Posté : dim. 26 févr. 2012 21:51
par TopXm
Salut,

Donnes un exemple de retour de request qui "merdoit", ça aidera sans doute ;)

c'est toi qui héberges l'image et tu veux récup l'url dans la page ? C'est de la lecture de code source à la volée ?

Re: [..] Récuperer un lien dans une variable

Posté : dim. 26 févr. 2012 22:17
par mikell
TopXm a écrit :C'est de la lecture de code source à la volée ?
Si oui, le script de chargement avec l'adresse précise de la page, ça aiderait...

Re: [..] Récuperer un lien dans une variable

Posté : dim. 26 févr. 2012 22:52
par yagonfstm91
TopXm a écrit :Salut,

Donnes un exemple de retour de request qui "merdoit", ça aidera sans doute ;)
Ben je l'ai poster dans le message juste au dessus :?
TopXm a écrit :c'est toi qui héberges l'image et tu veux récup l'url dans la page ? C'est de la lecture de code source à la volée ?
Oui
mikell a écrit :Si oui, le script de chargement avec l'adresse précise de la page, ça aiderait...
Ben je l'ai poster plus haut aussi, a moins que l'on parle pas de la meme chose...
► Afficher le texte

Re: [..] Récuperer un lien dans une variable

Posté : dim. 26 févr. 2012 23:23
par mikell
Faudrait faire un test de debug
► Afficher le texte

Re: [..] Récuperer un lien dans une variable

Posté : lun. 27 févr. 2012 12:09
par TopXm
Hello :)

En effet j'avais rien capté, je pensais que ce que tu avais posté c'était après le RegExp, mais dans ce cas vu le code source retourné on dirait bien que c'est le _TCPFileUpload qui se vautre et non le code fourni par Mikell ;)

Re: [..] Récuperer un lien dans une variable

Posté : mer. 29 févr. 2012 16:30
par yagonfstm91
Comment faire pour faire un truc du genre :

Si $sReponse (ou $lienyagoupload) contient "HTTP/1.1 200 OK" alors afficher une MsgBox ?

edit c'est bon j'ai trouver

Code : Tout sélectionner

$SplitLienYagoUpload = StringSplit($lienyagoupload, "/")
    If $SplitLienYagoUpload[4] = "?img=HTTP" Then
        MsgBox(48, "Erreur - YagoUpload", "L'envois de l'image a échoué, veuillez réessayer.")
        $lienyagoupload = "http://YagoUpload.fr.nf/?img=xpb4h.png"
    EndIf