|
| Erstatte en given tekst med noget andet Fra : Dingo |
Dato : 11-11-04 23:18 |
|
Jeg har en tekst, hvor jeg gerne vil have erstattet visse ting - f.eks.:
[denne tekst er fed] og det er [denne også]
skal erstattes med
<b>denne tekst er fed</b> og det er <b>denne også</b>
|denne tekst er kursiv| + denne |tekst|
skal erstattes med
<i>denne tekst er kursiv</i> + denne <i>tekst</i>
Hvordan kan man gøre det i PHP (v4.3.9, hvis det er aktuelt)?
| |
Peter Brodersen (12-11-2004)
| Kommentar Fra : Peter Brodersen |
Dato : 12-11-04 00:33 |
|
On Thu, 11 Nov 2004 23:18:27 +0100, "Dingo" <nowhere@invalid.xyz>
wrote:
>[denne tekst er fed] og det er [denne også]
>skal erstattes med
><b>denne tekst er fed</b> og det er <b>denne også</b>
>
>|denne tekst er kursiv| + denne |tekst|
>skal erstattes med
><i>denne tekst er kursiv</i> + denne <i>tekst</i>
Fx med regulære udtryk. Jeg bruger funktionen preg_replace() i
nedenstående.
<?php
$text = "[denne tekst er fed] og det er [denne også] og ";
$text .= "|denne tekst er kursiv| + denne |tekst|";
// to gange søg&erstat
$text = preg_replace('/\[(.*?)\]/s','<b>$1</b>',$text);
$text = preg_replace('/\|(.*?)\|/s','<i>$1</i>',$text);
print $text;
?>
Hvis der er tale om mere end bare helt simpel tekst, så vær opmærksom
på, at du måske kan risikere at tekst unødvendigt bliver ændret til
fed eller kursiv tekst, hvis den tilfældigvis indeholder [, ] eller |.
Der kan så være forskellige metoder for at kompensere for dette.
--
- Peter Brodersen
| |
Dingo (12-11-2004)
| Kommentar Fra : Dingo |
Dato : 12-11-04 23:54 |
|
> <?php
> $text = "[denne tekst er fed] og det er [denne også] og ";
> $text .= "|denne tekst er kursiv| + denne |tekst|";
> // to gange søg&erstat
> $text = preg_replace('/\[(.*?)\]/s','<b>$1</b>',$text);
> $text = preg_replace('/\|(.*?)\|/s','<i>$1</i>',$text);
> print $text;
> ?>
Tak, det virker fint.
| |
Dan Molberg (13-11-2004)
| Kommentar Fra : Dan Molberg |
Dato : 13-11-04 00:44 |
|
Peter Brodersen wrote:
> <?php
> $text = "[denne tekst er fed] og det er [denne også] og ";
> $text .= "|denne tekst er kursiv| + denne |tekst|";
> // to gange søg&erstat
> $text = preg_replace('/\[(.*?)\]/s','<b>$1</b>',$text);
> $text = preg_replace('/\|(.*?)\|/s','<i>$1</i>',$text);
> print $text;
Og hvis man skal have en røvfuld af dem:
$moenster = array(
'/\[(.*?)\]/s',
'/\|(.*?)\|/s'
);
$erstat = array(
'<b>$1</b>',
'<i>$1</i>'
);
$text = preg_replace($moenster, $erstat , $text);
--
MVH Dan Molberg
http://beyond.repair.dk/
| |
|
|