Mon but ici est d'ouvrir temp.php, exploser par ### (terminateur de ligne), puis par %% (terminateur de champ). Changez un champ spécifique, sur une ligne spécifique, puis implosez tout ensemble et enregistrez-le.ouvrir le fichier avec des données csv brutes, exploser tableau et sous-tableau, modifier la ligne, et le pack sauvegarder et enregistrer, en PHP
Il y a des variables couple en jeu ici:
row
= le numéro de ligne cible
target
= le nombre champ cible/colonne
nfv
= l'info que je veux placer dans le champ cible
Im en utilisant le compteur $i
pour compter jusqu'à ce que j'arrive à la rangée désirée. Puis contrer $j
pour compter jusqu'à ce que j'arrive à mon champ/cible désiré. Jusqu'à présent, cela me donne une erreur pour les arguments implosés invalides, ou n'enregistre aucune donnée du tout. Je suis sûr qu'il y a quelques choses qui ne vont pas, mais je suis frustré et perdu.
<?
$row = $_GET['row'];
$nfv = $_GET['nfv'];
$target = $_GET['target'];
$data = file_get_contents("temp.php");
$csvpre = explode("###", $data);
$i = 0;
$j = 0;
foreach ($csvpre AS $key => $value){
$i++;
if($i == $row){
$info = explode("%%", $value);
foreach ($info as $key => $value){
$j++;
if($j == "$target"){
$value = $nfv;
}
}
$csvpre[$key] = implode("%%", $info);
}
}
$save = implode("###", $csvpre);
$fh = fopen("temp.php", 'w') or die("can't open file");
fwrite($fh, $save);
fclose($fh);
header("Location: data.php");
?>
Si quelqu'un peut dire ce qui est mal à cela, s'il vous plaît être détaillé pour que je puisse apprendre pourquoi sa ne fonctionne pas.
Voici quelques données csv exemple pour les tests
1%%4%%Team%%40%%75###2%%4%%Individual%%15%%35###3%%4%%Stunt Group%%50%%150###4%%4%%Coed Partner Stunt%%50%%150###5%%4%%Mascot%%15%%35###6%%8%%Team%%40%%75###7%%8%%Stunt Group%%50%%150###8%%8%%Coed Partner Stunt%%50%%150###9%%3%%Team%%40%%75###10%%1%%Team%%40%%75###11%%1%%Solo%%15%%35###12%%1%%Duet%%50%%150###13%%2%%Team%%50%%50###14%%2%%Solo%%15%%35###15%%2%%Duet%%50%%150###16%%8%%Individual%%15%%35###
Vous n'avez pas déjà posé cette question? http://stackoverflow.com/questions/1629230/invalid-argument-when-imploding-in-php – cletus
Je ne peux pas m'empêcher de me demander ... Si vous savez que les valeurs auront le délimiteur %%, pourquoi ne pas simplement faire un simple 'str_replace (" %% $ cible %% "," %% $ nfv %% , $ file_as_string) '? – Anthony
@anthony, $ cible est le numéro de champ, pas la valeur dans le champ. –