Gå til innhold

RegEx/Iterator operasjon i PHP?


Gjest Slettet+1374861

Anbefalte innlegg

Gjest Slettet+1374861

Gitt tekstsegmentet:

 

Hei. Her er det litt tekst.

Mer tekst.
Blabla.
[list]
Punkt nummer 1
Pkt 2
Ja her er treern
[/list]

Det var en fin liten liste.
Mer blabla.

 

Hvordan ville dere gått fram for å trekke ut segmentet FRA OG MED "\[list\]" TIL OG MED "

\[/list\]", for så å endre disse til "<ul>" og "</ul>", finne ut hvor mange instances av \r\n, \n eller \r det er imellom start og slutt-taggen, og sette inn <li> på starten av hver linje, og </li> på slutten av hver.

 

Det var en ganske stor munnfull, men jeg har mest problem med å få tatt ut hele segmentet. Jeg er kyndig med preg_replace men klør meg litt i hodet over fx preg_match og ereg. Kan perl regex semantikken.

 

All hjelp er hjertlig velkommen. Regner med det må en kombinasjon av regex funksjoner til, evt noe lignende en iterator-operasjon.

 

(edit: måtte vist escape'e for å få skrevet \[list\] her i posten min...)

Endret av Slettet+1374861
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet-df17e

Hmm.. har ikke testa denne, men tror den skal fungere sånn ca. Men ikke forvent deg noe, for er ikke en raser på regulære utrykk og begynne å bli trøtt her jeg sitter :wee:

 

<?php

 

$input = "Din tekst som skal parses";

 

preg_match('/\[list\](.*?)\[\/list\]/is', $input, $match);

 

$regex[0] = '/\[list\]/';

$regex[1] = '/\[\/list\]/';

$regex[2] = '/\n/';

 

$rep[0] = '<ul>';

$rep[1] = '</ul>';

$rep[2] = '<li>';

$match = preg_replace($regex, $rep, $match);

 

print_r($match);

 

?>

[\PHP]

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...