replace() als alternatief nlbr() werkt maar 1x keer

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rene Wennekes

Rene Wennekes

11/03/2014 09:26:53
Quote Anchor link
Ik wil d.m.v. een knop de gebruiker een voorbeeld weergave laten zien wat hij/zij al in een textarea veld heeft getypt.
Om die reden kan ik dus helaas geen php gebruiken (wil het simpel houden zonder ajax).

Nu is het de bedoeling dat regeleindes vertaalt worden naar <br /> en wordt via innerhtml weergegeven.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print "<input type='button' value='Voorbeeld weergave'  class='submit' style='float: right; width: 140px;' onclick=\"document.getElementById('voorbeeldweergave').innerHTML=document.forms['admin']['description'].value.replace('\\n', '<br>');\" />\n";
?>


Heb op internet gezocht maar '\\n' is het enige wat bij mij schijnt te werken.

In ieder geval werkt het maar helaas maar 1x en dat is bij de 1e regeleinde. De rest slaat de functie over.

Dus als de gebruiker 4 alinea's typt is wel de regelafbreking van de 1e alinea maar de rest gaat gewoon door.

Ook heb ik in de functie eens getest door de 'e' in 'q' te veranderen en dat doet ie maar bij de 1e 'e'.

Iemand?
 
PHP hulp

PHP hulp

21/11/2024 19:28:45
 
Wouter J

Wouter J

11/03/2014 09:32:26
Quote Anchor link
Gebruik de "g" flag (global) om elke match te replacen:

Code (js)
PHP script in nieuw venster Selecteer het PHP script
1
"Hello\nWorld\nHow\nAre\nYou?".replace(/\n/g, '<br>')
Gewijzigd op 11/03/2014 09:32:40 door Wouter J
 
Rene Wennekes

Rene Wennekes

11/03/2014 09:40:13
Quote Anchor link
ok weten we meteen waar de /g voor staat.

Alleen zo zonder haakjes en andere combinaties geprobeerd krijg ik helemaal niks meer te zien als ik op de knop druk.

== update ==

value.replace(/\\n/g, '<br>')

schijnt het te doen. Nog ff goed testen ...

== update II ===

Ja met die dubbele \\ werkt het goed ook op mijn linux-doos

Waarom moet er bij mij er 1 \ bij dan? Is het omdat ik eigenlijk in php code zit?

<status solved="solved" />
Gewijzigd op 11/03/2014 09:58:54 door Rene Wennekes
 
Erwin H

Erwin H

11/03/2014 10:15:37
Quote Anchor link
Je geeft in php je string tussen dubbele quotes, dat betekent dat php de inhoud van de string gaat parsen. Daarbij geldt het \ karakter als het escape karakter. Je geeft aan php daarmee aan dat het volgende karakter niet letterlijk moet worden genomen, maar als speciaal karakter. \n wordt daarmee in php al geinterpreteerd als line break en niet als twee karakters (\ en n los dus). Om nu weer het escape karakter niet door php als escape karakter te laten gelden moet je dat karakter escapen.... door een extra \.

Voorbeeld werkt waarschijnlijk beter:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
echo "\n";   //geeft een linebreak, n geescaped
echo "\\n";  //geeft \n, \ is geescaped

//in tegenstelling tot enkele quotes

echo '\n';   //geeft \n, niets geescaped
echo '\\n';  //geeft \\n, niets geescaped
?>
Gewijzigd op 11/03/2014 10:16:38 door Erwin H
 
Rene Wennekes

Rene Wennekes

11/03/2014 10:22:43
Quote Anchor link
Ja ik weet het van het escapen.
Maar om mijn hersentjes te trainen en mezelf moeilijk te maken gebruik ik gewoon een code-editor (Notepad 2)

Maar zodra je met Javascript code in php gaat werken moet je drommels goed uitkijken.

Voordeel van gebruik tekst editors is dat je de taal goed machtig blijft.

Bedankt.

<status solved="solved" />
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.