Hallo, ik heb een probleem met de onzichtbare EOL.

Net als deze tekst heb ik een mysql database met zo'n tekst die komt uit eeb input en heeft gewone regelafbrekingen.

Nu wil ik die tekst via innerHTML op het scherm weergeven. Echter in de html wordt de code in "onclick" dus ook afgebroken.

In de html krijg je dan

onclick = bla bla innerHTML='1e regel
2e regel
3e regel'

Nu heb ik dat op mijn windows test server met php weten op te lossen met

<?php
$description = str_replace(PHP_EOL, '<br />', $description);
?>

Nu blijkt het echter op de linux webserver niet te werken.

Iemand een idee?

p.s. ik al 3x geprobeer met <script>, <code> maar iedere keer krijg ik de code niet in een code venster. wellicht een idee omdat tussen titel en tekst waar ook B I U S link en quote staat te zetten.
[quote="http://stackoverflow.com/questions/20908100/invisible-character-at-the-end-of-line-using-line-break"]
If you are unsure about whether a single \n or \r could occur (and either is a valid line end), or possibly in combination with the other, here is a belt-and-suspenders approach:

replace all \n\r and all \r\n combos with \n alone.
replace all remaining \r with \n.
replace all \n with <br/>
with

string = string.replace(/\r?\n\r?/g, '\n');
string = string.replace(/\r/g, '\n');
string = string.replace(/\n/g,'<br/>');
Written out as separate instructions for clarity. Instead of first changing to \n, you can also immediately insert <br/>s, of course.
[/code]


[size=xsmall]Toevoeging op 06/03/2014 10:31:38:[/size]

>> p.s. ik al 3x geprobeer met <script>, <code> maar iedere keer krijg ik de code niet in een code venster. wellicht een idee omdat tussen titel en tekst waar ook B I U S link en quote staat te zetten.

[code.] en [/code.] (zonder punt).
<?php
$description = nl2br($description);
$description = str_replace(array("\r","\n"), '', $description);
?>
Is that javascript?

I have to fix it with php because the text (with line break) is in a php variabele.

<?php
print "&nbsp;<a href='#' onclick=\"document.getElementById('popup').style.display = 'block'; document.getElementById('popup-tekst').innerHTML='$description';\">$title</a>&nbsp;";
?>
innerHTML klinkt als javascript ;) Maar anders lijkt me nl2br() voldoende. Anders Santhe's voorbeeld.
<?php
$description = str_replace('\n', '<br />', $description);
$description = str_replace('\r', '<br />', $description);
?>

al geprobeerd maar werkt niet.

nlbr werkte ook niet omdat er wel <br /> achter gezet wordt maar de regeleindes in de code blijven staan.

Ben even weg kom straks terug ....
- SanThe - op 06/03/2014 10:35:08

<?php
$description = nl2br($description);
$description = str_replace(array("\r","\n"), '', $description);
?>


Dit is anders dan jouw scriptje.
SanThe,

ff snel je 2 regels toegevoegd maar werkt niet op de linux-bak, sorry.

En hoe ziet het er dan nu uit?
>> nlbr werkte ook niet omdat er wel <br /> achter gezet wordt maar de regeleindes in de code blijven staan.

Als de breaks verder al goed zijn, hoef je alleen de \n\r op te ruimen dus

$description = preg_replace("/\s+/", " ", trim($description));

edit: sorry Ivo ;) Aangepast.
"\r" is een karakter: de return.

'\r' zijn letterlijk 2 karakters: een backslash en de letter r.

Net als
<?php
$i = 1;
echo '$i';
echo "$i";
?>

in de eerste echo gewoon 2 tekens op het scherm zet.

Let dus op met welke quotes je gebruikt

Reageren