implode e array

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Salve a tutti. Ho un form che alla pressione del tasto submit mi scrive delle righe su un file. Il problema è che la riga la trova e la scrive giusta solo che mi aumenta la spaziatura di tutte le altre righe del file.

il codice è questo

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
<head>

<title>Installer!</title> 

<meta name="DC.Language" scheme="RFC1766" content="Ita">
<meta HTTP-EQUIV="Imagetoolbar" Content="no">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<link rel="stylesheet" type="text/css" href="../css/step.css">

</head>

<body>

<div id="form">

<?php

$action = htmlspecialchars($_GET['action'], ENT_QUOTES);

if (!$action){ 

?>

<h1>3. Impostazioni personali</h1>

<form name="modulo2" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>?action=scrivi" method="post" enctype="multipart/form-data" >
			
			<fieldset>
			<label>Limite massimo di e-mail giornaliere</label>
			<input type="text" name="gio" id="gio" size="5"  autocomplete="off" />
			</fieldset>

<div id="bottons">
			<input type="submit" id="submit" name="Submit" value="Crea">
			<input type="reset" id="submit" value="Reset">
			<input type="button" id="submit" value="Ricarica" onClick="document.location.reload()">
</div>	
</form> 

<?php
}

if ((isset($_POST['Submit'])) && ($action == "scrivi")){
	
	$mailgiorno = $_POST['gio'];
	
if (!filter_var(!empty($mailgiorno) || is_numeric($mailgiorno) )){ 

    echo  "Il valore del primo campo non è valido o è vuoto."; 
	
	}else{
	
		$lines = file('file.php'); 
		$lines[2] = '$numero = ' . $mailgiorno . ';'; 
		file_put_contents('file.php', implode("\n", $lines)); 
		echo "Valore scritto con successo!";		
		
		}
}
?>

</div>	
</body>
</html>

Il problema è
PHP:
implode("\n", $lines));

Lo \n viene ripetuto anche per le altre righe.

esempio

Prima il file da scrivere è:

PHP:
<?php
echo 'ciao occupo la 2 riga';
$numero = ;
echo 'ciao occupo la 4 riga';
echo 'ciao occupo la 5 riga';
?>

Dopo diventa:
PHP:
<?php

echo 'ciao occupo la 2 riga';

$numero = 10;
echo 'ciao occupo la 4 riga';

echo 'ciao occupo la 5 riga';

?>

Non facendomi più ritrovare con le righe
 
Ciao,
mettendo un var_dump sulla riga ho notato che la stringa veniva scritta con un ritorno a capo
ti basta sostituire i ritorni con str_replace()

PHP:
 $lines = file('file.php');
        // sostituisco i ritorni a capo
        $lines = str_replace("\n", "", $lines);
        // var_dump($lines);
        $lines[2] = '$numero = ' . $mailgiorno . ';';
        file_put_contents('file.php', implode("\n", $lines));
        echo "Valore scritto con successo!";
 
Ciao,
mettendo un var_dump sulla riga ho notato che la stringa veniva scritta con un ritorno a capo
ti basta sostituire i ritorni con str_replace()

PHP:
 $lines = file('file.php');
        // sostituisco i ritorni a capo
        $lines = str_replace("\n", "", $lines);
        // var_dump($lines);
        $lines[2] = '$numero = ' . $mailgiorno . ';';
        file_put_contents('file.php', implode("\n", $lines));
        echo "Valore scritto con successo!";

Perdonami non ho capito come deve essere il codice.

La parte del ritorno a capo è questa
file_put_contents('file.php', implode("\n", $lines));

quindi per essere corretta come devo fare? Una cosa tipo questa?

$acapo = str_replace('\n')
file_put_contents('file.php', implode($acapo, $lines));
 
Se faccio in questo modo:

PHP:
		$lines = file('file.php'); 
		$acapo = str_replace("\n");
		$lines[2] = '$numero = ' . $mailgiorno . ';'; 
		file_put_contents('file.php', implode($acapo, $lines));
		echo "Valore scritto con successo!";

Da quest errore:

Codice:
Warning: Wrong parameter count for str_replace() in /home/a2058901/public_html/FakeMailer/mailer 3.1/install/steps/3.php on line 82

Ho letto qui https://www.mrw.it/php/ref/str-replace_477.html e non ho capito come utilizzarla nel mio caso...
 
Se faccio in questo modo:

PHP:
		$lines = file('file.php'); 
		$acapo = str_replace("\n");
		$lines[2] = '$numero = ' . $mailgiorno . ';'; 
		file_put_contents('file.php', implode($acapo, $lines));
		echo "Valore scritto con successo!";

Da quest errore:

Codice:
Warning: Wrong parameter count for str_replace() in /home/a2058901/public_html/FakeMailer/mailer 3.1/install/steps/3.php on line 82

Ho letto qui https://www.mrw.it/php/ref/str-replace_477.html e non ho capito come utilizzarla nel mio caso...

Ok sono pirla, non avevo visto che la modifica era già stata fatta....
 
Si,
il codice che ti ho postato era quello funzionante ma non ho capito ..

sei riuscito a risolvere?
 

Discussioni simili