Newline naar break tussen <p> en </p> tags
Ik haal data uit een databank en ik wil de newlines (/n) vervangen door een break (<br />) MAAR enkel tussen <p> en </p> tags. Nl2br biedt hiervoor helaas geen oplossing omdat deze functie overal een break plaatst.
Een oplossing zou zijn om de functie preg_replace te gebruiken om de tekst tussen de <p> tags te vinden en hierop nl2br los te laten als volgt:
Maar helaas, dit werkt niet. De tekst staat er wel maar nergens werd een break toegevoegd. Het lijkt wel alsof nl2br niet werkt in die functie.
Heeft er iemand een oplossing voor mijn probleem?
Groetjes David
Gewijzigd op 12/09/2010 17:14:43 door David Willems
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$string = "ABC";
preg_replace("#<p>(.+?)</p>#",nl2br("\\1"),$string);
echo $string;
?>
$string = "ABC";
preg_replace("#<p>(.+?)</p>#",nl2br("\\1"),$string);
echo $string;
?>
Dalando De Zuil op 12/09/2010 18:39:57:
Probeer eens zonder variable...
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$string = "ABC";
preg_replace("#<p>(.+?)</p>#",nl2br("\\1"),$string);
echo $string;
?>
$string = "ABC";
preg_replace("#<p>(.+?)</p>#",nl2br("\\1"),$string);
echo $string;
?>
Dit werkt helaas ook niet :(
Heeft er nog iemand een idee?
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$string = "ABC";
$result = preg_replace("#<p>(.+?)</p>#",nl2br("\\1"),$string);
echo $result;
?>
$string = "ABC";
$result = preg_replace("#<p>(.+?)</p>#",nl2br("\\1"),$string);
echo $result;
?>
zoiets?
Rik geen op 12/09/2010 19:20:09:
zoiets?
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$string = "ABC";
$result = preg_replace("#<p>(.+?)</p>#",nl2br("\\1"),$string);
echo $result;
?>
$string = "ABC";
$result = preg_replace("#<p>(.+?)</p>#",nl2br("\\1"),$string);
echo $result;
?>
zoiets?
Ook dit doet het niet. Het ziet er gewoon naar uit dat de functie nl2br gewoonweg niets wijzigt.
Edit: e-modifier toegevoegd.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$string = "ABC
<p>
a
b
</p>";
$string=preg_replace("#<p>(.+?)</p>#ise","'<p>'.nl2br('$1').'</p>'",$string);
echo $string;
?>
$string = "ABC
<p>
a
b
</p>";
$string=preg_replace("#<p>(.+?)</p>#ise","'<p>'.nl2br('$1').'</p>'",$string);
echo $string;
?>
Let er wel op dat nu de enter na <p> ook gelijk omgezet wordt in een <br />. Als je dit niet wil zal je je regex moeten aanpassen...
Gewijzigd op 12/09/2010 20:22:08 door SilverWolf NL