13. maj 2014 - 19:20
Der er
8 kommentarer og 1 løsning
Hvordan fjerner jeg 'ny linie' i en tekst?
Hej Eksperter Jeg henter nogle data fra en MySQL database. Disse ønsker jeg at sætte ind i et array. for ($i=0;$i<mysql_num_rows($result);$i++) { $row = mysql_fetch_array($result); $arrangements[$row['start']]['id'] = $row['id']; $arrangements[$row['start']]['name'] = $row['name']; $arrangements[$row['start']]['start'] = $row['start']; $arrangements[$row['start']]['end'] = $row['end']; $row['text'] = trim(str_replace('\n','',$row['text'])); $row['text'] = str_replace('\t','',$row['text']); $row['text'] = str_replace('\r','',$row['text']); $arrangements[$row['start']]['text'] = $row['text']; $arrangements[$row['start']]['visible'] = $row['visible']; } 'text' er af datatypen varchar(300) i databasen. På trods af de 3 str_replace forsvinder 'ny linie' ikke fra $row['text']. Kan nogle give mig en forklaring og helst også en løsning på dette problem? Venligst Christian
Annonceindlæg tema
Nej - Men det kunne godt ske. Alle afsnit i teksten som skal gemmes i (php) arrayet starter med <p>.
Egentlig er det meningen at arrayet skal bruges til at oprette et tilsvarende array i javascript. Det er der problemet opstår. Det går galt. Når jeg laver: <script type="text/javascript"> var arrangements = []; <?php foreach($arrangements as $arrangement){ ?> arrangements[<?php echo $arrangement['id'];?>] = {}; ... arrangements[<?php echo $arrangement['id'];?>]['text'] = '<?php echo $arrangement['text'];?>'; ... <?php } ?> </script> kommer følgende javascript frem på siden: arrangements[1]['text'] = '<p> Hello</p> <p> World</p>'; Der er altså ny linie efter <p> Det er wisywyg editoren CKEDITOR som oprindeligt har lavet teksten før den gemmes i databasen, og af en eller anden årsag er der ny linie efter <p>. Det kan jeg jo ikke rigtig gøre noget ved. Men hvordan fjerner jeg det igen.
<p></p> markerer afsnit. Der er altid linieskift mellem afsnit. Det er naermest definitionen paa et afsnit. Saa enten skal du droppe afsnit eller saa maa du leve med linieskift.
Det med <p> er klart nok. men hvad jeg ønskede var at lave arrangements[1]['text'] = '<p> Hello</p> <p> World</p>'; om til arrangements[1]['text'] = '<p>Hello</p><p>World</p>'; Da det i html jo er ligegyldigt om man anvender ny linie. Efter en del kamp er jeg nået frem til følgende løsning: $row['text'] = trim(str_replace(chr(10),'\n',$row['text'])); $row['text'] = str_replace(chr(9),'\t',$row['text']); $row['text'] = str_replace(chr(13),'\r',$row['text']); Så behøver jeg slet ikke fjerne 'tab', 'newline' og 'cariage return'. I mit javascript står der nu: arrangements[1]['text'] = '<p>\n\tHello</p>\n<p>\n\tWorld</p>'; Send et svar.
Nu tror jeg at det begynder at daemre. :-) Den oprindelige kode: $row['text'] = trim(str_replace('\n','',$row['text'])); $row['text'] = str_replace('\t','',$row['text']); $row['text'] = str_replace('\r','',$row['text']); skal nok vaere: $row['text'] = trim(str_replace("\n",'',$row['text'])); $row['text'] = str_replace("\t",'',$row['text']); $row['text'] = str_replace("\r",'',$row['text']);
Aha - Dobbelt " i stedet for '
Ja. \r og \n har kun speciel betydning i "" ikke i ''.
Vi tilbyder markedets bedste kurser inden for webudvikling