[php] Regex: eregi_replace om comment te cleanen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 21-09 09:19

Dentist

Next patient please...

Topicstarter
Hi,

ik moet een random comment met daarin een <img>-tag opschonen totdat alleen de source van de image overblijft (http://image.com/image.jpg). Nu begrijp ik dat ik daarvoor regexen moet gebruiken, maar het probleem is dat ik daar geen enkel verstand van heb. Ook de tutorials maken me niet echt wijzer, dus als iemand me zou kunnen helpen, zou dat erg fijn zijn..

Voorbeeldcomment:
blablacomment hier is een plaatje [img]"http://lokatie.com/plaatje.gif"[/img] nog wat meer tekst blabla
hier moet ik dan uit hebben: http://lokatie.com/plaatje.gif

thx..

Acties:
  • 0 Henk 'm!

  • DaNose
  • Registratie: Juni 1999
  • Niet online
http://www.regularexpressions.info/ :o

Hier vind je alles wat je nodig hebt.

Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 21-09 09:19

Dentist

Next patient please...

Topicstarter
Bedankt, had ik al gezegd dat tutorials me niet echt wijzer maken...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Wat leer je ervan als we je een regexp geven die je kant en klaar kan gebruiken? ;)

Maar goed, als je daar wat aan denkt te hebben:
PHP:
1
$text = preg_replace("/<\s*img[^>]*src=\"(.*)\"[^>]*>/iU", "$1", $text);

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Misschien een tutorial zoeken over het lezen van tutorials? :P

Om je in ieder geval uit de brand te helpen;
PHP:
1
2
3
4
5
$broncode = "blablacomment hier is een plaatje [img]\"http://lokatie.com/plaatje.gif\"[/img] nog wat meer tekst blabla";
if(eregi("<mg src=\"(^\")+\"", $broncode, $regs))
  print_r($regs);
else
  echo "img-src not found.";

Zou het moeten doen, maar heb hem niet getest.

Maar ik kan je ten zeerste aanraden toch eens te kijken naar regular expressions. Mijn voorkeur gaat sinds kort uit naar preg in plaats van ereg, vanwege de grotere mogelijkheden (metnamen het doen van ungreedy matches is een uitkomst).

//Edit
Bovenstaande oplossing van NMe- is breeder toepasbaar. Zo zal mijne het niet meer doen wanneer tussen de <img>-tag en het src-attribuut bijv. ht alt-attribuurt staat. Bij de zijne wel.

[ Voor 19% gewijzigd door frickY op 08-07-2006 00:06 ]


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 21-09 09:19

Dentist

Next patient please...

Topicstarter
-NMe- schreef op zaterdag 08 juli 2006 @ 00:03:
Wat leer je ervan als we je een regexp geven die je kant en klaar kan gebruiken? ;)
Weinig, maar op dit moment heb ik de tijd niet om 'even' regexpen te gaan doorgronden. Ieder zijn ding.
Maar goed, als je daar wat aan denkt te hebben:
PHP:
1
$text = preg_replace("/<\s*img[^>]*src=\"(.*)\"[^>]*>/iU", "$1", $text);
Bedankt voor het begin.. Deze replacet echter alleen de tekst van de image tag, maar wat ik eigenlijk wil is dat ie de rest compleet stript, zodat alleen de link overblijft.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dan heb je geen replace nodig maar een match.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 21-09 09:19

Dentist

Next patient please...

Topicstarter
-NMe- schreef op zaterdag 08 juli 2006 @ 00:52:
Dan heb je geen replace nodig maar een match.
Ah ok.. thx!

Acties:
  • 0 Henk 'm!

Verwijderd

Als je dan toch niet echt moeite wilt doen, waarom dan nog gaan frunniken met onleesbare regexp's? Je kunt bijvoorbeeld gebruik maken van een bestaande html parser. Dat levert mijns inziens vele malen schonere en leesbaardere scripts op.

Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 21-09 09:19

Dentist

Next patient please...

Topicstarter
Omdat ik die ene preg_match_all regel 1x nodig heb in een script, dat verder al helemaal gebouwd is. Thanks voor de hulp overigens, met een beetje tweaken had ik wat ik wilde hebben (en toch wat geleerd dus! ;))

Overigens, niet als flame bedoelt dit, maar meer als opmerking: soms begrijp ik niet waarom in eerste instantie mensen zo moeilijk kunnen doen over eenvoudige dingen.. Dit is een gevalletje wat mij een paar uur zou kosten en jullie 3 minuten. Dan kan ik dat wel proberen te begrijpen, maar dat is zo inefficient als de pest. Het gaat me een klein resultaat, dat geen groot probleem hoeft te worden. Het leerproces komt later wel.

Als iemand in de rimboe honger heeft, dan geef ik hem een hengel en doe ik voor hoe hij die moet gebruiken, maar geef ik niet het advies 'om maar te leren vissen' en het verder lekker uit te zoeken.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Omdat men wilt voorkomen dat dit een helpdesk forum wordt waar iedereen maar zijn problemen dumpt, en anderen die kunnen gaan oplossen. Gelukkig :)
Zo blijft het niveau wat hoger. En het is helemaal niet erg om eerst tijd in je eigen problemen te steken, voor je anderen gaat vragen dat voor je te doen.
Wij zijn ook niet geboren met de kennis van reguliere expressies. Daar hebben wij ook tijd voor vrij moeten maken om het op te pakken. Dus waarom zou jij dat niet hoeven? Mocht je er echt niet uitkomen, en er echt sprake is van een 'probleem'. Dan is GoT the place to be :)
En anders is hier nooit iemand te beroert je op de goede weg te helpen met wat trefwoorden of hints.

[ Voor 25% gewijzigd door frickY op 08-07-2006 12:05 ]


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 21-09 09:19

Dentist

Next patient please...

Topicstarter
frickY schreef op zaterdag 08 juli 2006 @ 12:04:
Omdat men wilt voorkomen dat dit een helpdesk forum wordt waar iedereen maar zijn problemen dumpt, en anderen die kunnen gaan oplossen. Gelukkig :)
Dat snap ik en dat vind ik ook helemala niet erg.. Je moet je alleen afvragen of hints als 'zoek het maar op www.tutorialsite.nl het niveau wel hoger maken..
Zo blijft het niveau wat hoger. En het is helemaal niet erg om eerst tijd in je eigen problemen te steken, voor je anderen gaat vragen dat voor je te doen.
Ook prima, maar wie zegt dat ik er niet eerst tijd in heb gestoken. Ik zeg zelfs in mijn 1e post dat ik ook niet wijzer wordt uit de tutorials, vervolgens is de 1e reactie: zie deze tutorialsite.
Wij zijn ook niet geboren met de kennis van reguliere expressies. Daar hebben wij ook tijd voor vrij moeten maken om het op te pakken. Dus waarom zou jij dat niet hoeven? Mocht je er echt niet uitkomen, en er echt sprake is van een 'probleem'. Dan is GoT the place to be :)
En anders is hier nooit iemand te beroert je op de goede weg te helpen met wat trefwoorden of hints.
Niemand kan alles weten, iedereen heeft sterke punten en zwakke punten. Er is in mijn ogen niks mis mee als iemand zijn sterke punten overdraagt aan iemand van wie het betreffende onderwerp een zwak punt in. Als diegene dat vervolgens op een ander gebied teruggeeft, worden beide partijen daar beter van.

Maar goed, laten we hier niet verder op gaan (ik zal het in ieder geval niet doen), ik wilde alleen even een punt maken dat ik sommige opmerkingen onnodig vind en totaal niet vind bijdragen aan de oplossing en het niveau van Got waar zo mee geschermd wordt. Als ik een vraag stel, wil ik graag een antwoord op die vraag (en nee, dat hoeft niet altijd in de vorm van een kant en klaar script te zijn, soms kan 1 regeltje code iemand meer helpen dan mensen denken) en niet een wedervraag over waarom ik het antwoord op die vraag zelf niet weet.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Tsja, je kan wel zeggen dat je veel uitgezocht hebt, maar als ik zinnen als deze lees, dan zet ik toch mijn vraagtekens bij de tijd die je erin gestoken hebt:
Dentist schreef op zaterdag 08 juli 2006 @ 11:55:
Het leerproces komt later wel.
Verder wil ik aan frickY's post nog toevoegen dat het voor jou misschien een paar uur duurt, terwijl ik die regexp in een minuutje uit mijn mouw schudde, maar als we je hier telkens een regexp moeten aangeven omdat jij te lam ben om te leren (om het maar even cru te zeggen) dan hebben wij daar niks aan, en jij ook niet want je blijft afhankelijk van ons.

Naar aanleiding van onze eigen regexp-FAQ zou deze kwestie trouwens niet eens zo geweldig lastig moeten zijn, ook niet voor een beginner. Je was misschien niet op mijn exacte regexp uitgekomen, maar iets dat werkte had je vast zelf ook wel kunnen fabriceren. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1