supression d'une ligne via str_replace

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : supression d'une ligne via str_replace

par cuak » 06 nov. 2006, 13:57

Merci beaucoup, cela marche :
$contenu = file_get_contents('include_block_suprimer.php');
$contenu = str_replace("<option value='$blocksupr'>$blocksupr</option>","","$contenu");
$fp = fopen("include_block_suprimer.php","w"); 
fwrite($fp,$contenu); 
fclose($fp);

par Ryle » 06 nov. 2006, 13:47

Tu peux garder le code que tu as pour la lecture et le remplacement de ta chaine, et puis pour l'écriture dans le fichier, il te suffit de l'ouvrir en mode écriture et d'écraser le fichier avec ton contenu modifié :)
...

$fp = fopen("ton_fichier","w"); 
fwrite($fp,$contenu); 
fclose($fp); 

par cuak » 06 nov. 2006, 13:21

D'accord. Mais je ne comprend plus enfin je suis pommé. Mon probleme que j'ai mis quelque message plus haut pourrais-tu me le resoudre en me donant la solution??

Ce serait vraiment sympas de ta part.

par Ryle » 05 nov. 2006, 17:00

C'était effectivement ironique, mais j'avais dans l'idée que grace à ça tu irais plus souvent jeter un coup d'oeil aux documentations ... et histoire d'en remettre une couche, dans la doc de easyphp (le dernier étant la 1.8 ), il est écrit
- Apahe 1.3.33
- PHP 4.3.10
- MySQL 4.1.9
- phpMyAdmin 2.6.1
.. tu as aussi la fonction phpinfo() pour savoir rapidement ce qui est configuré sur ton serveur ;)

Quand à l'écriture d'un fichier le fwrite() comme le file() fonctionnent... suffit juste de leur passer les bons arguments au bon format :)

par cuak » 05 nov. 2006, 13:30

Très irronique tes reflexion. Je suis sous easyphp que j'ai installe ril y a moin d'un moi d'onc je pense avoir la version 5 non??

Sinon ca serait gentil de me proposer une solution ou meme de me montrer un exemple si possible..

par Ryle » 04 nov. 2006, 20:29

Comme ton serveur php, je ne connaissait pas la fonction file_put_contents(). J'ai donc jeté un coup d'oeil à la doc pour voir comment elle fonctionne et l'on découvre dès la deuxième ligne que cette fonction n'existe que depuis et pour PHP 5.

Version dans laquelle tu te trouves naturellement puisque tu as du comme moi lire la documentation et n'a pas été surpris par cette remarque qui aurait pu merveilleusement expliquer ce message d'erreur... :P

Il ne reste donc plus qu'à signaler ce bug au support, ou peut être trouver une autre solution adaptée à ta version de php ;)

par cuak » 04 nov. 2006, 11:55

Voila ce que cela donne :
<?
$blocksupr = $_POST['blocksupr'];
unlink("block/block_$blocksupr.php");
unlink("block/var/block_$blocksupr.php");


$contenu = file_get_contents('include_block_suprimer.php');
str_replace("<option value='$blocksupr'>$blocksupr</option>","","$contenu");
file_put_contents('include_block_suprimer.php','$contenu');

$contenu = file_get_contents('include_block_modifier.php');
str_replace("<option value='$blocksupr'>$blocksupr</option>","","$contenu");
file_put_contents('include_block_modifier.php','$contenu');
?>
et toujour une erreur :
Fatal error: Call to undefined function: file_put_contents() in d:\program files\easyphp1-8\www\gestion de site\block_suprimer_2.php on line 9
Please pouvez-vous me donner la solution?? :( :(

par iclo » 03 nov. 2006, 22:14

Lis la doc sur les deux fonctions, tu verras les différences:
file_get_contents()
file()

par cuak. » 03 nov. 2006, 21:45

Bien reçu. Mais que dois-je faire pour recuperer le contenu du fichier. On ma conseiller file_gets_content() mais j'ai lu que c'etait pareil que file(). Alors que dois-je essayer??

par iclo » 03 nov. 2006, 20:12

Array to string conversion : Tu passes un tableau en paramêtre, au lieu d'une chaine de caractère (String)

Regardes un peu la doc sur la fonction file() que tu utilises pour récupérer $contenu (qui en passant n'a pas besoin d'être en quote)

ps: on t'a dit que c'était inutile de poster des "up", "aidez-moi" et autres SOS, pense à lire les règle du forum, surtout avant d'aller modérer les messages des autres membres (Ce que les modérateurs font très bien d'ailleurs)

par cuak » 03 nov. 2006, 19:18

S'il vous plait aidez-moi.

par cuak » 03 nov. 2006, 11:24

Voila ce que j'ai fait :
<?
$blocksupr = $_POST['blocksupr'];
unlink("block/block_$blocksupr.php");
unlink("block/var/block_$blocksupr.php");
$sup = fopen("include_block_suprimer.php","a+");

$contenu = file("include_block_suprimer.php");
ftruncate($sup,'0');
str_replace("<option value='$blocksupr'>$blocksupr</option>","","$contenu");
fwrite($sup,$contenu);
fclose($sup);
$sup = fopen("include_block_modifier.php","a+");
$contenu = file("include_block_suprimer.php");
ftruncate($sup,'0');
str_replace("<option value='$blocksupr'>$blocksupr</option>","","$contenu");
fwrite($sup,$contenu);
fclose($sup);
?>
Et mon message d'erreur est :
Notice: Array to string conversion in d:\program files\easyphp1-8\www\gestion de site\block_suprimer_2.php on line 10

Notice: Array to string conversion in d:\program files\easyphp1-8\www\gestion de site\block_suprimer_2.php on line 16
Mais par contre ce que je cherche a suprimer est suprimer!!

Mais pourquoi ce probleme??

par cuak » 02 nov. 2006, 18:41

merci beaucoup!!

par Ryle » 02 nov. 2006, 18:31

bon bah vite fait :
- lire le fichier jusqu'à la ligne à supprimer
- lire le fichier après la ligne à supprimer
- ré-écrire le fichier sans la ligne à supprimer

Edit :
voire, vite fait aussi :
- lire tout le fichier et le mettre dans une chaine de caractère
- utiliser str_replace pour supprimer la chaine recherchée
- ré-écrire le fichier sans la ligne à supprimer

par cuak » 02 nov. 2006, 18:22

A merci beaucoup je n'avais pas compris. Mais je ne voit pas comment je dois faire avec fopen , fwrite, ou fread.

A la limite je pourrait recuperer la lign que je veut suprimer mais ensuite je ne pouirrait que la reecrire en suplement de la premiere. Tu n'aurais pas truc vite fait a me proposer??