/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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/



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste