03. november 2003 - 19:56
Der er
4 kommentarer og
1 løsning
Konflikt ml. linieskift i tabel og aut. l.skift v. indskr. i form
Med $tekst = ereg_replace("\n", "<br>", $tekst);
kan brugeren i et simplet CMS system indskrive tekst og bare trykke return. Så bliver den nye linie også til en ny linie, når formen er sendt og teksten ender med at blive vist.
Men denne replace gør, at man ikke bare kan kopiere tabeller ind som alm. skrevet i html - så bliver alle linieskift ml. fx </tr> og den næste <tr> lagt op foran tabellen som tom plads.
Idé til, hvordan det kan undgås med noget string manipulation?
Jeg har prøvet forskellige ting, men kan ikke komme igennem.
En strategi kunne være at fjerne mellemrum mellem ...tabel tag>........<næste tabeltag, fra <tabel> slutter til </tabel> begynder ??
03. november 2003 - 23:52
#3
Eller du kan prøve noget så simpelt som:
$Kolonnen_der_skal_udskiftes = str_replace("\n","<br>",$Kolonnen_der_skal_udskiftes);
04. november 2003 - 01:48
#4
Den med kolonner forstod jeg ikke, henninghabor...
I melemtiden har jeg selv lavet følgende løsning, som måske er lidt storm p agtig, og foreløbig kun virker ved een tabel inde i en streng:
<?php
$string = 'Først noget tekst. Her står stabellen m. tags ml.
Også med linieskift.
Og flere linieskift. <table border="1" cellpadding="0" cellspacing="2" width="180">
<tr>
<td>11</td>
<td>12</td>
<td>13</td>
</tr>
<tr>
<td>21</td>
<td>22</td>
<td>23</td>
</tr>
<tr>
<td>31</td>
<td>32</td>
<td>33</td>
</tr>
</table><br>Og der sluttes igen med noget tekst.
Som også evt. har linieskift.
Og flere linieskift.';
// tabellen med tekst før og efter, uden behandling
// ikke så godt, de tvungne linieskift flytter op foran tabellen
$stringOldWay = ereg_replace("\n", "<br>", $string);
print "$stringOldWay";
print "<br/><br/>------fra gl. til ny måde------------<br/><br/>\n";
// opdeling af strengen i før tabel, tabel og efter tabel
// strengen fra tabellen og ud
$stringAfterTableStart = strstr($string, '<table');
$countAfterTableStart = strlen($stringAfterTableStart);
$stringBeforeTabelStart = substr($string, 0, -$countAfterTableStart);
// strengen fra slut på tabellen og ud
$stringAfterTabelEnd = strstr($string, '</table>');
$countAfterTabelEnd = strlen($stringAfterTabelEnd);
// så sætter stumperne sammen igen...
// tekst før tabel, m. tvungne linieskift
$stringBeforeTabelStart = ereg_replace("\n", "<br>", $stringBeforeTabelStart);
print $stringBeforeTabelStart;
// tabellen selv uden tvungen linieskift
$stringTable = substr($stringAfterTableStart, 0, -$countAfterTabelEnd);
print $stringTable;
// tekst efter tabellen, m. tvungne linieskift
$stringAfterTabelEnd = ereg_replace("\n", "<br>", $stringAfterTabelEnd);
print $stringAfterTabelEnd;
?>