[PHP] URL vinden in IMG tag *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 20:46
Hallo,

Ik ben bezig met een nieuwsbrief systeem en heb grotendeels al mijn problemen opgelost behalve deze:
Wanneer de gebruiker een tekst typt waarbij afbeeldingen toegevoegd zijn komen deze zo in de database te staan tussen de tekst

[img]"http://www.google.nl/intl/nl_nl/images/logo.gif"[/img]

Wanneer ik de mail verstuur include ik de afbeeldingen in de mail zodat ze altijd getoond worden.

Nu zou ik graag willen dat bij src (src=http://www.google.nl/intl/nl_nl/images/logo.gif) gestript word en alleen maar src="logo.gif" overblijft en dat ik het hele path (http://www.google.nl/intl/nl_nl/images/logo.gif) in een apart variable kan opslaan.

Dit zal een waarschijnlijk array worden want er kunnen meerdere afbeeldingen in een stuk tekst voorkomen

Ik heb op dit moment niet echt een idee hoe ik dit aan moet paken. Heb wel geprobeerd met ereg en dat soort zaken de boel te wijzigen maar zonder succes.

Iemand een idee hoe ik [img]"logo.gif"[/img] over kan houden en de hele url in een apart variabele kan opslaan?
(De hoeveelheid parameters van de IMG tag kunnen ook kunnen ook wisselen.)


Groeten
offtopic:
kan een mod even [PHP] toevoegen aan de titel ik zag dat ik dit vergeten was

[ Voor 9% gewijzigd door Erpenator2 op 24-04-2004 19:50 ]


Acties:
  • 0 Henk 'm!

  • sjoerdb2
  • Registratie: Juli 2001
  • Laatst online: 09-05 09:52
Kun je niet beter het systeem zo maken dat de gebruiker de plaatjes die hij wil gebruiken upload naar een bepaalde directory, zodat bij het in de tekst plaatsen van afbeeldingen, de <img src= verwijst naar het eigen domein. Dan hoef je ook niet meer iets te strippen, en je hoeft geen afbeeldingen meer te includen in je mail.

Acties:
  • 0 Henk 'm!

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 20:46
Het werkt op een bestaand systeem en en dan is het handig wanneer je dit kunt blijven gebruiken en daarom wil ik het op deze manier op proberen te lossen inplaats van een andere :)

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Met een regexp de delen tussen src=" en " eruit vissen en dan een basename () over het resultaat heen halen?

Acties:
  • 0 Henk 'm!

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 20:46
Heb je hier misschien ook een klein voorbeeldje van want ik ben met beide aan de slag gegaan maar ook zonder succes ( basedir en regex)

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
PHP:
1
2
3
<?php
echo basedir ("http://www.google.nl/intl/nl_nl/images/logo.gif");
?>

*regexpen ben ik zelf ook geen held in :(

[ Voor 28% gewijzigd door PrisonerOfPain op 24-04-2004 21:27 ]


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Erpenator2 schreef op 24 april 2004 @ 21:15:
Heb je hier misschien ook een klein voorbeeldje van want ik ben met beide aan de slag gegaan maar ook zonder succes ( basedir en regex)
In de FAQ hiero in PW staat het een en ander uitgelegt over Regular Expressions.

Acties:
  • 0 Henk 'm!

  • Superdeboer
  • Registratie: December 2002
  • Niet online

Superdeboer

Sa-weee-tah

In de PHP-manual staat bij de user-reacties een stuk voorbeeld code, waar je kunt zien hoe je een url kunt matchen en in gedeeltes ontleden:

http://nl.php.net/manual/en/function.preg-replace.php

Bekijk de reactie van 'cgamedude at yahoo dot com' met name. :)

When I write my code, only God and I know what it means. One week later, only God knows.
Hell yes it's a Cuban Cigar, but I'm not supporting their economy, I'm burning their fields.


Acties:
  • 0 Henk 'm!

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 20:46
Dat is al een stukje van de oplossing. Deze onderstaande code werkt.

Nu nog even kijken of dat ik de url apart ook nog in een variabele op kan slaan


code:
1
2
3
4
<?php 
echo preg_replace('/(src=("))(.*)(\/)([^\/]+("))/',"\\1\\5",'[img]"http://www.google.nl/intl/nl_nl/images/logo.gif"[/img]');

?>

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
PHP:
1
2
3
4
5
if (eregi ('(src=("))(.*)(\/)([^\/]+("))',
$link, $result))
{
print_r ($result);
}

Zoiets?

Acties:
  • 0 Henk 'm!

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 20:46
Eindelijk gevonden !!!

PHP:
1
2
  $image = preg_replace('/(.*)(src=)(["\']*)([^ ]*)(\/)([^\/"\' ]+)(["\'])*()(.*)/s',"\\6",$bericht2);
  $url = preg_replace('/(.*)(src=)(["\']*)([^ ]*)(\/)([^\/"\' ]+)(["\'])*()(.*)/s',"\\4\\5\\6",$bericht2);


Geeft het gewenste resultaat.
Nu moet ik alleen nog de gehele url ([img]"http://www.google.nl/intl/nl_nl/images/logo.gif"[/img] ) vervangen door het source plaatje lokaal op te geven zoals dit :

([img]"logo.gif"[/img])

Iemand een idee hoe je dat doet?

Acties:
  • 0 Henk 'm!

Verwijderd

ehm... gewoon str_replace?
evt arrays meegeven als argumenten...
Pagina: 1