solution nécessaire:Pourquoi ajoute-t-il le texte au début de la ligne suivante, et non la fin de la droite?
Je travaille avec un simple script PHP qui devrait:
- Ajouter "valeur4 :::" à la fin de la première ligne dans un fichier
- Ajouter " ::: "à la fin de toutes les lignes suivantes
Je suis novice en programmation, et je suis assise ici depuis deux jours essayant de comprendre cela. Peut-être un petit détail, ou il pourrait être totalement faux de faire cette tâche.
Cela peut être une mauvaise façon de le faire, ou peut-être un problème regex? Je ne sais vraiment pas.
Je vous demande de bien vouloir m'aider avec la solution.
Information:
Le fichier newstest.db ressemble à ceci:
ID:::value1:::value2:::value3:::
1:::My:::first:::line:::
2:::My:::second:::line:::
3:::Your:::third:::line:::
Et en utilisant ce script php je voudrais la faire ressembler à ceci:
ID:::value1:::value2:::value3:::value4:::
1:::My:::first:::line::::::
2:::My:::second:::line::::::
3:::Your:::third:::line::::::
Problème:
Jusqu'à présent, j'ai presque eu, mais je suis confus pourquoi il ajoute la « valeur4 ::: » à la commençant de la deuxième ligne , puis ajoutez " ::: "au début (pas à la fin) de toutes les autres lignes.
donc je reçois un fichier qui ressemble à ceci:
ID:::value1:::value2:::value3:::
value4:::1:::My:::first:::line:::
:::2:::My:::second:::line:::
:::3:::Your:::third:::line:::
Je pensais que:
$lineshere = 'Some text here:::';
$lines1 = $linehere.'value4:::';
génèrerait "texte ici ::: ::: valeur4"
Peut-être le problème est dû à cette façon d'ajouter ligne après ligne? Je suis une novice en programmation, donc j'ai peut-être utilisé des fonctions totalement fausses tec pour faire ce travail.
Mais dans ce cas, il semble que l'on ajoute un espace ou un saut de ligne/ligne au mauvais endroit.
Mon essai sur cette solution:
<?php
// specify the file
$file_source="newstest.db";
// get the content of the file
$newscontent = file($file_source, true);
//set a start value (clear memory)
$lines ='';
// get each line and treat it line by line.
foreach ($newscontent as $line_num => $linehere) {
// add "value4:::" at the end of FIRST line only, and put it in memory $lines
if($line_num==0) {
$lines.= $linehere.'value4:::';
// Just to see what the line looks like
//echo 'First line: '.$lines.'<br /><br />';
}
// then add ":::" to the other lines and add them to memory $lines
if($line_num>0) {
$lines1 = $linehere.':::';
$lines.= $lines1;
//just look at the line
//echo 'Line #'.$line_num.': '.$lines1.'<br /><br />';
}
}
//Write new content to $file_source
$f = fopen($file_source, 'w');
fwrite($f,$lines);
fclose($f);
echo "// to show the results ar array<br /><br />";
$newscontentlook = file($file_source, true);
print_r(array_values($newscontentlook));
?>
Tout comme une note de côté: vous pouvez regarder vos fichiers à l'aide d'un éditeur hexadécimal pour voir les caractères de retour retour chariot/chariot ainsi. –
Je crois, cela est dû au fait que $ linehere se termine par un saut de ligne. –
Quel est le but de 'true' dans la ligne' $ newscontent = file ($ file_source, true); '? Changez-le en 'FILE_IGNORE_NEW_LINES' et cela devrait fonctionner. – ClasG