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
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
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