Hallo,

Ik zit met een probleem bij men UBB functie. Ik wil een lijst maken dmv (negeer de "-"):
[-list-]
[-*]sadf
[-*]asfd
[-*]asdf
[/list]

Maar de grap is dat een punt alle voor alle characters staat maar NIET voor de newline... Naja simpel denk je dan gewoon nog een \n er tussen gooien.

$text = preg_replace('/\[list\]([.\n]*)\[\/list\]/i', '<ul>$1</ul>', $text);


Helaas werkt dit niet. van die \n een \s maken heeft ook geen effect. Een vorige keer heb ik dit opgelost door de newlines weg te strippen maar dat is dit keer geen oplossing.
en \r\n ?
een \r is een carriage return character \n is een newline :) . een punt pakt alleen de \n niet...

edit: hebt 't ook even snel getest maar 't werkt niet.
[[:space:]] pakt newlines, maar ook tabs, spaties, carriage returns en form feeds, dus ik weet niet of je daar iets aan hebt...
\w is in principe in preg_match de gelijke daaraan.
[[:space:]] komt niet echt voor in de pattern syntax maar goed. 't werkt als ik alleen newlines er tussen heb staan maar ik krijg 't nog niet voor elkaar dat er ook andere tekens tussen mogen staan.

$text = preg_replace('/\[list\]([.[[:space:]]]*)\[\/list\]/i', '<ul>$1</ul>', $text);


Dit zou dan normaal moeten werken maar helaas.

edit:

\w - any "word" character
\W - any "non-word" character

Een newline is geen word character geloof ik. \s zou 't ook moeten doen aangezien die staat voor alle newline characters. Maar goed volgensmij werken ze allemaal wel maar ik krijg de syntax niet goed vermoed ik.
Roy,

als ik test met preg_replace, werkt dit wel: [\s]
Ik heb nu de volgende oplossing:

/\[list\]([\w\W]*)\[\/list\]/mis

Reageren