Archief - php: bij post overbodige enter

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Marbug

Legacy Member
telkens als ik de file opslaag, dan komt er een enter bij bij iedere regel <br> omdat daar nu "$tekstx = str_replace("\n","<BR>",$tekstx);" staat, maar ervoor deed die dus een enter in het bestand zelf "\n" bij iedere regel bij het opslagen toen deze script er niet was.
Ik heb al een tijdje zitten zoeken waar het probleem zat, maar ik heb het niet gevonden, misschien vind iemand anders wat het probleem is:
PHP:
<?php if ($_GET['c'] == "edit") {
$filename = 'news/'.$_REQUEST['file']; // selecteer het textbestand
if(file_exists($filename)) {
	eval(file_get_contents("$filename")); 
$error = "<FONT COLOR=\"#ff0000\"><B>[error]</B></FONT> "; // foutboodschap voorvoegsel

if(isset($_POST['action'])) {
  // wijzig een bestand
  if($_POST['action'] == "change") {
    $filename = 'news/'.$_GET['file']; 
    chmod($filename, 0666);
    $handle = fopen($filename, "wt"); // openen om (t)extfile te over(w)riten
	  fwrite($handle,"\$titel0='$titel0';\n");
	  fwrite($handle,"\$newsdatum0='$newsdatum0';\n"); 
	  fwrite($handle,"\$byname0='$byname0';\n"); 
	  $tekstx = stripslashes($_POST['tekst']);
	  $tekstx = str_replace("\n","<BR>",$tekstx);
      fwrite($handle,"\$newsbericht0='$tekstx';\n");
    fclose($handle);
    chmod($filename, 0600);
    $msg = "file '".$filename."' saved succesfully";
    $focus = true;
	echo "<meta http-equiv='refresh' content='0;URL=addnews.php?c=edit&file=$file'>";
  }
} // einde actie
?>
<br />
<b>status message:</b>
<?= (isset($msg) ? $msg : "none") ?>
<br />
<?php
if(isset($filename)) {
echo "titel = [$titel0]<br>";
echo "Made on $newsdatum0<br>";
echo "Made by $byname0<br>"; 
?>
<form name="frm" action="<? 'addnews.php?c=edit&file='.'$filename' ?>" method="post">
<textarea class="code" name="tekst" cols="100" rows="20" onChange="document.forms['frm'].elements['wijz'].disabled = false; document.forms['frm'].elements['wijz'].focus();">
<?php
	echo "$newsbericht0";  
?>
</textarea><br />
<table width="600" border="0" cellspacing="0" cellpadding="2">
<tr>
<td width="250">
<INPUT TYPE="hidden" NAME="ffile" VALUE="<?= $filename ?>" />
<input class="form" type="submit" name="action" value="change" id="wijz" />
</td>
</tr>
</table>
</form>
<?php
}}}
?>
dat is wat er gebeurd na 5 keer opslagen
PHP:
test0
<BR><BR><BR><BR><BR>test1
<BR><BR><BR><BR><BR>test2
<BR><BR><BR><BR><BR>test3
<BR><BR><BR><BR><BR>
dit is wat het normaalgezien moet zijn:
PHP:
test0
<BR>test1
<BR>test2
<BR>test3
<BR>

orez

Legacy Member
doet nl2br($tekstx) da ook al die br's toevoegen, of heb je nl2br nog ni geprobeerd??

(new line to break) nl2br kan dus je str_replace vervangen

Marbug

Legacy Member
nu doet hij geen br meer, maar laat hij terug spaties tussen zoals wanneer die "$tekstx = str_replace("\n","<BR>",$tekstx);" er ni was:
na 2keer saven:
PHP:
test0



<BR><BR><BR><BR><BR><BR><BR><BR><BR>test1



<BR><BR><BR><BR><BR><BR><BR><BR><BR>test2



<BR><BR><BR><BR><BR><BR><BR><BR><BR>test3



<BR><BR><BR><BR><BR><BR><BR><BR><BR>
edit: het probleem zit niet bij die \n naar <br> replace ze, maar om het feit dat die bij iedere regel een enter toegvoegd, of is er een mogelijkheid om te zeggen dat die juist geen \n mag zetten ? misschien is dat een oplossing?

0n3Liner

Legacy Member
als je edit moet je natuurlijk ook wel eerst de br's omzetten naar \r\n he! anders blijf je gewoon bijkrijgen!

Marbug

Legacy Member
en hoe doe ik dat dan ? :s
gewoon, bij die fwrite, ipv alleen \n moet ik \r\n doen ?

Marbug

Legacy Member
aha, ik heb een oplossing gevonden :)
bij het opslaan heb ik het nu zo gezet:
PHP:
  if($_POST['action'] == "change") {
    $filename = 'news/'.$_GET['file']; 
    chmod($filename, 0666);
    $handle = fopen($filename, "wt"); // openen om (t)extfile te over(w)riten
	  fwrite($handle,"\$titel0='$titel0';\n");
	  fwrite($handle,"\$newsdatum0='$newsdatum0';\n"); 
	  fwrite($handle,"\$byname0='$byname0';\n"); 
	  $tekstx = stripslashes($_POST['tekst']);
	  nl2br($tekstx);
	  $tekstx = str_replace("\r\n","<br>",$tekstx);
      fwrite($handle,"\$newsbericht0='$tekstx';\n");
    fclose($handle);
    chmod($filename, 0600);
bij het lezen van het bericht om dan te editen:
PHP:
$newsbericht0 = str_replace("<br>","\r\n",$newsbericht0);
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan