Avatar billede cpfrande Nybegynder
23. januar 2007 - 08:57 Der er 3 kommentarer og
1 løsning

Behandling af tekst-streng

Godmorgen alle eksperter,

Jeg har et lille problem, som jeg har bakset med i et stykke tid nu.

Jeg får input fra et tekst-felt på en form. Dette input skal jeg have konventeret, hvor noget kode byttes ud med andet kode.

F.eks. skal [f]FED SKRIFT[/f] blive til <b>FED SKRIFT</b>

Det er også nemt at lave, hvilket jeg har gjort. Problemet kommer dog, når der skal laves [o1]overskrift 1[/o1]. Jeg kan naturligvis fint bruge en str_repleace() til at løse problemet, men så får jeg blot en ekstra linie (<br />), når jeg udfører min nl2br().

Det mellemrum vil jeg helst undgå når jeg bruger følgende koder:
[o1][/o1] (<h1></h1>)
[punkt][/punkt] (<ul></ul>)
[l][/l] (<li></li>)

Hvordan gør jeg det? Jeg kunne forestille mig, at der muligvis skal bruges noget regex, men det kan jeg slet ikke finde ud af.

Er der nogen kloge hoveder derude, der har en løsning på mit problem?

På forhånd tak! :-)

-
frande
Avatar billede ellebaek Nybegynder
23. januar 2007 - 09:12 #1
du kan fx. gøre sådan her...

$nycode[0] = '</h1><br />';
$nyrep[0] = '</h1>';
$nycode[1] = '</ul><br />';
$nyrep[1] = '</ul>';
$nycode[2] = '</li><br />';
$nyrep[2] = '</li>';

$bbcode[0] = '/(\[url\])(.*)(\[\/url\])/';
$bbreplace[0] = '<a href="${2}">Link</a>';
$bbcode[1] = '/(\[b\])(.*)(\[\/b\])/';
$bbreplace[1] = '<b>${2}</b>';
$bbcode[2] = '/(\[i\])(.*)(\[\/i\])/';
$bbreplace[2] = '<i>${2}</i>';

echo preg_replace(nl2br(preg_replace($bbcode, $bbreplace, $text)), $ncode, $nyrep);

I denne kode kan du først lave alle dine replaces med de arrays der hedder bbcode og bbreplace på samme måde som ovenfor... dernæst laver den en nl2br og endelig en preg_replace på det der er replacet hvor den  så med nyrep og nycode arraysne erstatter fx. </li><br /> med </li>...
Har ikke testet det, men vil mene det burde virke... :-) så håber det kan bruges.
Avatar billede cpfrande Nybegynder
29. januar 2007 - 18:30 #2
Halløjsa,

Beklager mit sene svar - men har haft så travlt. Det virker dog.

Smider du et svar, så du kan få dine points? :-)

-
frande
Avatar billede ellebaek Nybegynder
04. februar 2007 - 13:26 #3
det er helt ok... har også selv været ret presset :-)

her er et svar.
..Ellebæk!
Avatar billede cpfrande Nybegynder
04. februar 2007 - 14:12 #4
Tak for hjælpen! :-)

-
frande
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester