Avatar billede dennism Nybegynder
24. april 2007 - 09:19 Der er 21 kommentarer og
1 løsning

PHP: søt i string

Jeg har en string som f.eks. indeholder dette:

<img src="images/news/sfblogo.jpg">Her er noget tekst<img src="images/news/sfblogo.jpg">Her er noget mere tekst<img src="images/news/sfblogo.jpg">...

Jeg vil nu gerne have en metode til at søge denne string igennem og gemme alle disse src'es i et array. Nogen der kan hjælpe mig med det?
Avatar billede dennism Nybegynder
24. april 2007 - 09:36 #1
Det skulle have stået:
søg i string
Avatar billede johan.o Nybegynder
24. april 2007 - 10:57 #2
Måske sådan her..

preg_match_all("/<img src=\"(.*)?\">/", $dintekst, $resultat);
print_r($resultat);

Mvh. Johan
Avatar billede johan.o Nybegynder
24. april 2007 - 11:53 #3
..fik lige testet...sådan her..

preg_match_all("/<img src=\"(.*?)\">/", $dintekst, $resultat);
print_r($resultat);

Mvh. Johan
Avatar billede dennism Nybegynder
24. april 2007 - 14:56 #4
jeg kan se, at billederne istedet er skrevet med:
<img src='images/news/sfblogo.jpg'>

Hvilke ændringer skal jeg så lave?
Avatar billede dennism Nybegynder
24. april 2007 - 14:57 #5
Kan desuden se, at det også kan være:
<img src='images/news/sfblogo.jpg' style='margin:5px' align='left'>

Det har jo også noget at sige.. :(
Avatar billede dennism Nybegynder
24. april 2007 - 15:00 #6
Jeg har denne tekst:
<img src='images/news/sfblogo.jpg' style='margin:5px' align='left'>"Dejligt at se så ...

Og kører denne:
preg_match_all("/<img src='(.*?)'/", $text, $images);

Det giver dette array:
Array
(
    [0] => Array
        (
            [0] => <img src='images/news/sfblogo.jpg'
        )

    [1] => Array
        (
            [0] => images/news/sfblogo.jpg
        )

)

Der er et eller andet galt der..den o'te indgang skal helst ikke være der?
Avatar billede johan.o Nybegynder
24. april 2007 - 22:19 #7
Funktionen preg_match_all returnere et array. Den første nøgle (0) repræsentere hele det regulære udtryk, de efterfølgende nøgler (1-..) repræsentere de afsnit der i udtrykket er lavet med paranteser (...)

Så det er ikke rigtigt til at komme udenom, men hvis du vil have det i et array kan du lave..

$ditArray=array();
$ditArray=$images[1];

Men jeg er ikke helt klar over hvad du gerne vil have at preg_match_all skal finde. Skal du bruge src='billede.jpg' eller billede.jpg.....skal du bruge align='left' eller left...skal du bruge style='margin:5px' eller kun margin:5px...skal den tage hele indholdet af <img> som et resultat eller skal det gemmes i forskellige niveauer ?

Mvh. Johan
Avatar billede dennism Nybegynder
24. april 2007 - 23:35 #8
Tak for dit svar!

Det eneste jeg er interesseret i, at at have et array med dette indhold:
$images[0]="images/news/billede1.jpg";
$images[1]="images/news/billede2.jpg";
$images[2]="images/news/billede3.jpg";
...

Det er alt information jeg skal bruge ;) Style, align mm. skal jeg ikke bruge.

Håber du kan hjælpe mig videre herfra!
Avatar billede johan.o Nybegynder
25. april 2007 - 00:28 #9
Hvad med det her, der skulle det være ligemeget om det er ' eller " der er omkring..

preg_match_all("/<img src=['|\"](.*?)['|\"].*?>/", $dintekst, $resultat);

$images=array();
$images=$resultat[1];

print_r($images);

Mvh. Johan
Avatar billede johan.o Nybegynder
25. april 2007 - 00:32 #10
..og gad vide om ikke denne her er ligeglad hvor i <img> src delen står..

preg_match_all("/<img.*?src=['|\"](.*?)['|\"].*?>/", $dintekst, $resultat);

$images=array();
$images=$resultat[1];

print_r($images);

Mvh. Johan
Avatar billede dennism Nybegynder
25. april 2007 - 06:58 #11
Så vidst jeg kan se, så kan man med den løsning kun have et IMG-tag i stringen?..eller de bliver måske gemt i et to-dimensionelt arrray, hvor de ligger som $resultat[1][0], $resultat[1][1], $resultat[1][2]...?
Avatar billede dennism Nybegynder
25. april 2007 - 07:17 #12
Det er meget tæt på at fungere nu, men der er kun eet lille problem. Jeg vil gerne søge to stinge igennem og tilføje dem til samme array. Jeg har derfor:

    preg_match_all("/<img.*?src=['|\"](.*?)['|\"].*?>/", $intro, $resultat);
    preg_match_all("/<img.*?src=['|\"](.*?)['|\"].*?>/", $text, $resultat2);
    $images=array();
    $images=$resultat[1];
        //tilføj resultat2 til $image
    print_r($images);

Som du kan se, så mangler jeg at tilføje resultat2 til images. Hvordan kan jeg klare det?
Avatar billede dennism Nybegynder
25. april 2007 - 12:47 #13
Måske kan du også hjælpe mig her:
http://www.eksperten.dk/spm/775122
Avatar billede johan.o Nybegynder
25. april 2007 - 15:17 #14
Kan du evt. lægge de to strenge sammen..?

preg_match_all("/<img.*?src=['|\"](.*?)['|\"].*?>/", $intro.$text, $resultat);

Mvh. Johan
Avatar billede johan.o Nybegynder
25. april 2007 - 15:26 #15
Kiggede forbi dit andet spørgsmål og hvis du kun vil have .jpg og .jpeg så burde dette gøre det..

preg_match_all("/<img.*?src=['|\"]([^\"\']*?\.jp[e]{0,1}g)['|\"].*?>/", $dintekst, $resultat);

..og så array_unique() som hmortensen siger i det andet spørgsmål.

Mvh. Johan
Avatar billede dennism Nybegynder
25. april 2007 - 15:44 #16
Så mangler vi vist kun én ting..den skal også gerne tage billeder, som f.eks. hedder .Jpg..kan du klare den også? :)

Du må meget gerne smide et svar :)
Avatar billede johan.o Nybegynder
25. april 2007 - 15:51 #17
..måske sådan her..

preg_match_all("/<img.*?src=['|\"]([^\"\']*?\.jp[e]{0,1}g)['|\"].*?>/i", $dintekst, $resultat);

Mvh. Johan
Avatar billede johan.o Nybegynder
25. april 2007 - 15:55 #18
Hov også et svar...kommer her :)

Mvh. Johan
Avatar billede dennism Nybegynder
25. april 2007 - 17:42 #19
Er der ikke kun et i til forskel? Hvad gør det?
Avatar billede johan.o Nybegynder
25. april 2007 - 18:57 #20
i'et gør at både store og små bogstaver matches, uden i'et skal bogstavernes 'case' være præcis som skrevet i udtrykket.

Mvh. Johan
Avatar billede dennism Nybegynder
25. april 2007 - 19:42 #21
Så er alt som det skal være ;)

Jeg takker mange gange!
Avatar billede johan.o Nybegynder
25. april 2007 - 19:47 #22
Velbekomme - og tak for points.

Mvh. Johan
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