[PHP]Reguliere expressies

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • douweh
  • Registratie: Maart 2001
  • Laatst online: 09-10-2024
Hoi, ik heb een probleem met reguliere expressies..
Ik heb een input string..

deze ziet er als volgt uit..

alle ronde haken rond list, zijn eigenlijk rechte haken, maar dat wordt React gek :)

"(list)punt een
punt twee
punt drie(/list)"

Nu is het dus de bedoeling dat (list) vervangen wordt door <UL>
(/list) door </UL> ... dat is natuurlijk logisch en niet zo lastig ook..

Het probleem ligt me erin dat ik dus alle \n tekens binnen een (list) en een (/list),
wil vervangen door een <LI>.
zodat ik de volgende HTML codes krijg..
"<UL>
<LI>punt een
<LI>punt twee
<LI>punt drie
</UL>"

Wie helpt me op weg..

Ik heb het volgende al geprobeerd, maar dat werkt niet...
PHP:
1
2
3
        $inhoud = eregi_replace("(\\[list\].*)\n(.*\\[/list\])","\\1<LI>\\2",$inhoud); 
        $inhoud = eregi_replace("\\[list\]","<UL>",$inhoud); 
        $inhoud = eregi_replace("\\[/list\]","</UL>",$inhoud);

[ Voor 31% gewijzigd door douweh op 30-01-2003 19:12 ]


Acties:
  • 0 Henk 'm!

Verwijderd

douweh schreef op 30 januari 2003 @ 19:09:
"(list)punt een
punt twee
punt drie(/list)"
Kan je deze (list) 'en niet string replacen? Als de structuur altijd hetzelfde is....str_replace()
PHP:
1
2
3
4
$blaat = "(list)punt een
punt twee
punt drie(/list)"
str_replace("(list)", "<li>", $blaat)

Iets in die richting?

[ Voor 15% gewijzigd door Verwijderd op 30-01-2003 22:13 ]


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 17-09 22:12
Hmm komt me bekend voor...heb het zelf zo opgelost:
PHP:
1
2
3
4
5
6
7
8
9
10
11
$patrn = array(
  "/\\[list\](.*?)\\[\/list\]/",
  "/\\[\*\]/"
);

$html_patrn = array(
  "<UL TYPE=\"desc\">\\1</UL>", 
  "<LI>" 
);

preg_replace($ubb_patrn, $html_patrn, $input_string);

Acties:
  • 0 Henk 'm!

  • klokop
  • Registratie: Juli 2001
  • Laatst online: 16-09 19:21

klokop

swiekie swoeng

Vergeet niet de <li> aan het eind van de regel weer af te sluiten met </li>.

"Passing silhouettes of strange illuminated mannequins"


Acties:
  • 0 Henk 'm!

Verwijderd

klokop schreef op 31 januari 2003 @ 09:36:
Vergeet niet de <li> aan het eind van de regel weer af te sluiten met </li>.
Hoeft niet bij HTML, wel bij XHTML1.0 :) (Correct me if I'm wrong ;))

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Sybr_E-N:
Hmm komt me bekend voor...heb het zelf zo opgelost:
PHP:
1
2
3
4
5
6
7
8
9
10
11
$patrn = array(
  "/\\[list\](.*?)\\[\/list\]/",
  "/\\[\*\]/"
);

$html_patrn = array(
  "<UL TYPE=\"desc\">\\1</UL>", 
  "<LI>" 
);

preg_replace($ubb_patrn, $html_patrn, $input_string);

Hier replace je alleen een [*] met <li> en in de vraag van de topicstarter kom ik geen [*] tegen

Ik denk dat ik het liefst (op stackbased na, dan) de match tussen [list] en [/list] zou
evallen zie 'e' modifier met preg_replace
PHP:
1
2
3
4
5
function make_list_items ( $str ) {
   return '<li>' . str_replace ( "\n", '</li><li>', $str ) . '</li>';
}
$list_regex = '~\\[list\](.+?)\\[/list\]~e';
preg_replace( $list_regex, 'make_list_items ( "$1" )', $str );
iets van die strekking.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1