nl2br gebruiken met $_POST

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Miko Prorok

Miko Prorok

09/02/2011 19:35:04
Quote Anchor link
Hoi,

Ik heb een vraagje over nl2br. Ik heb al gezocht op internet en op phphulp, maar niet mijn specifieke vraag gevonden.

Hierbij dus:

Ik heb een formulier waarbij je in een open veld een opmerking kunt meesturen. Als je hierin een harde return geeft, slaat hij dit in de database op als \r\n\r, zoals het hoort.

Nu gebruik ik een $_POST om de ingevulde velden te onthouden nog voordat het opgeslagen wordt in de database. Dit is omdat ik een captcha heb en als die niet goed is ingevuld kom je automatisch terug op dezelfde pagina en zijn de velden dus nog ingevuld dmv de $_POST

Nu heb ik eigenlijk 2 probleempjes:

1) wanneer je terugkomt op de pagina, heeft de pagina de harde returns veranderd in \r\n\r, dit staat erg raar voor mensen die niet weten wat dat betekent. Kan ik dat voorkomen of dmv nl2br weer in harde returns laten aflezen?
Ik gebruik de volgende code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if (isset($_POST["opmerkingen"])) echo $_POST["opmerkingen"];?>


2) wanneer het formulier goed verstuurd wordt, wordt alles in de database correct opgeslagen. Er wordt dan tijdens het versturen vanaf de pagina ook een email verstuurd met daarin de ingevulde gegevens. In de mail komt nu echter ook die vervelende \r\n\r tekens, waardoor de opmerkingen slechter leesbaar worden en het staat gewoon erg slordig en onprofessioneel. De gegevens in de email worden ook via de $_POST verstuurd. Hoe kan ik nu zorgen dat in de email gewoon die harde returns goed worden weergegeven?
Ik gebruik de volgende codes:
eerst vraag ik de gegevens uit het formulier op via: $a_opmerkingen = $_POST["opmerkingen"];
dan zet ik dit in het email-gedeelte via: Opmerkingen: ".$a_opmerkingen."

Ik heb al geprobeerd nl2br($_POST["opmerkingen"]); bij beide problemen, maar dat werkt dus niet. Hij geeft geen foutmelding, maar de harde returns worden zowel in het formulier als in de email niet goed weergegeven.

Help?!

Alvast bedankt!
Miko
 
PHP hulp

PHP hulp

15/01/2025 07:22:47
 
- SanThe -

- SanThe -

09/02/2011 19:49:50
Quote Anchor link
In de textarea: htmlentities(stripslashes($_POST['...']))
In de mail: nl2br(htmlentities(stripslashes($_POST['...'])))
 
Jordi Kroon

Jordi Kroon

09/02/2011 19:53:16
Quote Anchor link
Ik heb nl2br ooit getest met command ( windows opdracht prompt)
En daar kan je zien dat nl2br niks anders doet dan achter elke enter een <br /> te zetten
 
- SanThe -

- SanThe -

09/02/2011 19:55:43
Quote Anchor link
Jordi kroon op 09/02/2011 19:53:16:
Ik heb nl2br ooit getest met command ( windows opdracht prompt)
En daar kan je zien dat nl2br niks anders doet dan achter elke enter een <br /> te zetten


Niet achter maar vóór. Staat gewoon op php.net.

Returns string with '<br />' or '<br>' inserted before all newlines.
 
Jordi Kroon

Jordi Kroon

09/02/2011 20:07:27
Quote Anchor link
ohw bij mij stonde ze achteraan , Vreemd
 
Kris Peeters

Kris Peeters

10/02/2011 09:26:05
Quote Anchor link
Je kan dat trouwens gemakkelijk zelf schrijven.

bv. een alternatief, met paragrafen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function nl2p ($text) {
  $lines = explode ("\n", $text);
  $result = "";
  foreach ($lines as $key=>$line) {
    $result .= '<p>'. $line .'</p>';
  }

  return $result;
}

?>


eventueel nog de "\r" elimineren.
 
Miko Prorok

Miko Prorok

10/02/2011 18:06:00
Quote Anchor link
Bedankt voor de reacties so far, ik ga eerst even de eerste oplossing proberen, volgens mij moet dat wel werken. Ik laat het weten of het wel of niet gelukt is.
 
Miko Prorok

Miko Prorok

21/03/2011 00:01:27
Quote Anchor link
Sorry voor de vertraging, maar ik was voor mijn werk in het buitenland.

Ik heb dat stripslashes geprobeerd, maar dat haalt dus alleen de \ weg en dan wordt het helemaal onduidelijk omdat de rnrnrnrn dan wel blijft staan in de tekst.

Ik ben niet zodanig thuis in php dat ik eventjes een stukje code wegschrijf, weten jullie niet of er gewoon een eenvoudige manier is om dit \r\n te elimineren? Ik neem aan dat ik niet de eerste en enige ben die hier last van ondervindt?

Alvast bedankt!

Toevoeging op 21/03/2011 00:14:28:

misschien dat iemand mij kan helpen door aan te geven hoe ik dat dan in mijn code dien te schrijven?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if (isset($_POST["opmerkingen"])) echo $_POST["opmerkingen"];?>


en

in de email die verstuurd wordt:

eerst het opvragen:

$a_opmerkingen = nl2br($_POST["opmerkingen"]);

en dan in de email:

Opmerkingen: ".$a_opmerkingen."

Alvast bedankt voor alle hulp de goede richting op!
 



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.