Avatar billede zac Nybegynder
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 ??
Avatar billede skovenborg Nybegynder
03. november 2003 - 20:57 #1
hvorfor bruger du ikke bare: $tekst = nl2br($tekst);
Avatar billede skovenborg Nybegynder
03. november 2003 - 21:00 #2
næ, vent jeg læste ikke spørgsmålet ordentligt - nevermind...
Avatar billede henninghabor Nybegynder
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);
Avatar billede zac Nybegynder
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;

?>
Avatar billede zac Nybegynder
21. oktober 2005 - 00:25 #5
lukker spm. for tiden...
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