Avatar billede straszek Praktikant
16. oktober 2007 - 20:23 Der er 23 kommentarer og
1 løsning

udtrække del af streng.

Jeg får fra min mms-gateway følgende streng:

/mms/mms.php?message=jcgptjaw&mobile=30280509&type=mms&mms_smil=%3Csmil%3E%0A%3Chead%3E%0A%3Clayout%3E%0A%3Cregion+id%3D%22Content%22+width%3D%22100%25%22+left%3D%220%25%22+fit%3D%22scroll%22+%2F%3E%0A%3C%2Flayout%3E%0A%3C%2Fhead%3E%0A%3Cbody%3E%0A%3Cpar%3E%0A%3Ctext+src%3D%22http%3A%2F%2Fsms.stadel.dk%2Fmms%2F1192558712_1305_1.txt%22+region%3D%22Content%22+%2F%3E%0A%3Cimg+src%3D%22http%3A%2F%2Fsms.stadel.dk%2Fmms%2F1192558712_1305_2.gif%22+region%3D%22Content%22+%2F%3E%0A%3C%2Fpar%3E%0A%3C%2Fbody%3E%0A%3C%2Fsmil%3E%0A


Ud af denne ville jeg gerne kunne udtrække billed navnet ( 1192558712_1305_2.gif) i en selvstændig streng - $img_url kan det på nogen måde lade sig gøre -

i følge udbyderen nedenstående virke, men jeg får bare en tom $img_url

if (eregi("<img[^>]* src=(\"|'){0,1}(http://[^>]+)(\"|'|\s|>)", $smil, $array));
$img_url = $array[2];
Avatar billede straszek Praktikant
16. oktober 2007 - 20:24 #1
og her komme streng'en lidt mere læse venlig

/mms/mms.php?message=jcgptjaw&mobile=30280509&type=mms&mms_smil=%3Csmil%3E%0A%3Chead%3E%0A%3Clayout%
3E%0A%3Cregion+id%3D%22Content%22+width%3D%22100%25%22+left%3D%220%25%22+fit%3D%22scroll%22+%2F%3E%0A%
3C%2Flayout%3E%0A%3C%2Fhead%3E%0A%3Cbody%3E%0A%3Cpar%3E%0A%3Ctext+src%3D%22http%3A%2F%2Fsms.stadel.dk%
2Fmms%2F1192558712_1305_1.txt%22+region%3D%22Content%22+%2F%3E%0A%3Cimg+src%3D%22http%3A%2F%
2Fsms.stadel.dk%2Fmms%2F1192558712_1305_2.gif%22+region%3D%22Content%22+%2F%3E%0A%3C%2Fpar%3E%0A%3C%
2Fbody%3E%0A%3C%2Fsmil%3E%0A
Avatar billede nielle Nybegynder
16. oktober 2007 - 20:38 #2
Prøv at smide streengen igennem en urldecode() først:

http://dk2.php.net/urldecode

Så bliver den noget pænere at arbejde med.
Avatar billede straszek Praktikant
16. oktober 2007 - 20:50 #3
og, det hjalp lidt på overskueligeheden så jeg opdagede en fejl i mit eregi'en $smil skulle være $mms_smil.

nu får jeg en streg der hedder:
http://sms.stadel.dk/mms/1192558712_1305_2.gif" region="Content" / 

Men jeg vil gerne bare have en streng med selve fil-navnet alstå 1192558712_1305_2.gif


Søren
Avatar billede nielle Nybegynder
16. oktober 2007 - 21:05 #4
Er der ikke et "-tegn i starten af strengen? Kun et i enden, lige efter gif-extension'en?
Avatar billede straszek Praktikant
16. oktober 2007 - 21:15 #5
strengen som den ser ud i.flg. $img_url:
http://sms.stadel.dk/mms/1192558712_1305_2.gif" region="Content" /
Avatar billede nielle Nybegynder
16. oktober 2007 - 21:19 #6
Prøv med dette pattern:

<img src=\"http://sms.stadel.dk/mms/([^\"]*)\"
Avatar billede olebole Juniormester
16. oktober 2007 - 21:20 #7
<ole>

Skal du ikke bruge URL'en til at hente billedet med, før du gemmer det?

/mvh
</bole>
Avatar billede jgivoni Nybegynder
16. oktober 2007 - 21:22 #8
Du kan også prøve med dette, hvis du ikke er sikker på at billedet altid ligger samme sted (domæne / sti):

eregi("<img[^>]* src=(\"|')?http://[^\"'>]*/([^\"'>]+)", $mms_smil, $array);
Avatar billede straszek Praktikant
16. oktober 2007 - 21:25 #9
Nielle: Din giver en tom $img_url
Olebole: Jo, men jeg vil også gerne kunne gemme det "rene" filnavn.
jgivoni: Din giver en syntax fejl
Avatar billede olebole Juniormester
16. oktober 2007 - 21:28 #10
For det første bør du nok ikke bruge en posix-, men preg-funktion:

preg_match("/<img(?:.*?)src=(?:\"|')(.*?)(?:\"|')/", $smil, $array);
$url = $array[1];
$name = end( explode("/", $array[1]) );

- og så kan du bruge det med løsningen fra det andet spørgsmål, sådan:

preg_match("/<img(?:.*?)src=(?:\"|')(.*?)(?:\"|')/", $smil, $array);
$url = $array[1];
$name = end( explode("/", $array[1]) );
$content = file_get_contents($url);
$fp = fopen("sti/til/mappe/".$name, "wb");
fwrite($fp, $content);
fclose($fp);
Avatar billede nielle Nybegynder
16. oktober 2007 - 21:30 #11
preg_match("#<img src=\"http://sms.stadel.dk/mms/([^\"]*)\"#g", $mms_smil, $matches);
print_r($matches);
Avatar billede olebole Juniormester
16. oktober 2007 - 21:31 #12
nielle >> Han skal også bruge hele URL'en:
    http://www.eksperten.dk/spm/801316
Avatar billede nielle Nybegynder
16. oktober 2007 - 21:33 #13
Hvorfor er der så to åbne spørgsmnål om det samme emne?

Hele url'et:

preg_match("#<img src=\"([^\"]+)\"#g", $mms_smil, $matches);
print_r($matches);
Avatar billede straszek Praktikant
16. oktober 2007 - 21:35 #14
Der er ikke åbnet 2 sprøgsmål og det samme emne  - det ene handle om at udtrække en bestem del af en streng (dette spørgsmål) - det andet om at hente en fil
Avatar billede straszek Praktikant
16. oktober 2007 - 21:37 #15
preg_match("#<img src=\"([^\"]+)\"#g", $mms_smil, $matches);
print_r($matches);

giver : Unknown modifier 'g'
Avatar billede nielle Nybegynder
16. oktober 2007 - 21:40 #16
Fjern g'et i slutningen at mønsteret :^)
Avatar billede olebole Juniormester
16. oktober 2007 - 21:40 #17
preg_match("#<img(?:.*?)src=(?:\"|')(.*)/(.*?)(?:\"|')#", $smil, $array);

$url = $array[1];
$name = $array[2];

print $url."/".$name;
Avatar billede jgivoni Nybegynder
16. oktober 2007 - 21:41 #18
måske har du puttet "if" ind igen foran mit udtryk? (Jeg havde taget det ud, da det ikke gør noget...)
I så fald mangler der nemlig en slutparantes.

if (eregi("<img[^>]* src=(\"|')?http://[^\"'>]*/([^\"'>]+)", $mms_smil, $array));

Giver ingen syntax fejl hos mig.
Må medgive olebole i at jeg foretrækker preg funktionerne, men denne skulle alligevel virke.
Avatar billede straszek Praktikant
16. oktober 2007 - 21:41 #19
Olebole, dit virker perfekt.

Smid et svar hvis du vil have point
Avatar billede olebole Juniormester
16. oktober 2007 - 21:45 #20
Jeg har svaret i det andet spm, så lad andre slås om dette ... efter min mening ikke mindst nielle, men det er din afgørelse  :)
Avatar billede olebole Juniormester
16. oktober 2007 - 21:47 #21
PS: årsagen til, jeg foretrækker preg er, at php.net af performance-hensyn selv anbefaler preg-funktionerne
Avatar billede nielle Nybegynder
16. oktober 2007 - 21:48 #22
... og så er ereg'erne i øvrigt helt på vej ud i nyere versioner af PHP !
Avatar billede straszek Praktikant
16. oktober 2007 - 21:50 #23
smid et svar nielle
Avatar billede nielle Nybegynder
16. oktober 2007 - 21:50 #24
Så'gerne :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester