PHP Rechercher mot dans txt et supprimer
Résolu/Fermé
A voir également:
- Trouver erreur de syntaxe fichier txt pix
- Erreur 0x80070643 - Accueil - Windows
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Trouver adresse mac - Guide
- Comment ouvrir un fichier epub ? - Guide
10 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
10 oct. 2009 à 23:01
10 oct. 2009 à 23:01
Yo!
Explications en commentaire dans le code:
Voilà.
Bon, tu aurais aussi pu le faire en utilisant fopen/fread/fwrite, mais la démarche aurait été la même: il
aurait fallu réécrire tout le fichier, donc mémoriser tout le fichier, remplacer les occurences, et réécrire
le tout.
Explications en commentaire dans le code:
<?php } else { $resultats =array(); /* Prend le contenu du fichier d'un coup */ $content = file_get_contents(FICHIER); $pattern = '|\b' . preg_quote($_POST['mot']) . '\b|i'; /* cherche combien de fois il trouve le mot, le tableau de résultat sera dans... $resultats ;-) */ $nb = preg_match_all($pattern, $content, $resultats)); echo "$mot trouvé $nb fois"; /* remplace toutes les occurences de $mot par rien */ $content = preg_replace($pattern, "", $content); /* Réécris le tout */ file_put_contents(FICHIER, $content);
Voilà.
Bon, tu aurais aussi pu le faire en utilisant fopen/fread/fwrite, mais la démarche aurait été la même: il
aurait fallu réécrire tout le fichier, donc mémoriser tout le fichier, remplacer les occurences, et réécrire
le tout.
Bonjour Killian
Je voudrais te remercier énormemen car c'est la première fois qu'on me répond a un sujet sur un forum. et j'ai passer une nuit sans dormir a chercher, je vais utiliser les variables que tu ma donner et essayer de faire fonctionner mon script, si j'arrive a le faire je vais le poster une fois terminé Mille merci de m'avoir aider.
Je voudrais te remercier énormemen car c'est la première fois qu'on me répond a un sujet sur un forum. et j'ai passer une nuit sans dormir a chercher, je vais utiliser les variables que tu ma donner et essayer de faire fonctionner mon script, si j'arrive a le faire je vais le poster une fois terminé Mille merci de m'avoir aider.
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
10 oct. 2009 à 23:21
10 oct. 2009 à 23:21
et j'ai passer une nuit sans dormir a chercher
Voui, j'avais cru déceler une certaine detresse. On est tous passé par là :-)
Voui, j'avais cru déceler une certaine detresse. On est tous passé par là :-)
Sa donnerais quoi mixé avec mon code ? je dois le mettre a la suite du code ou...
Car cela m'affiche une partie du code sur ma page ,j'avoue que j'ai du mal a l'insérer dedans.
Car cela m'affiche une partie du code sur ma page ,j'avoue que j'ai du mal a l'insérer dedans.
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
10 oct. 2009 à 23:42
10 oct. 2009 à 23:42
Attention, je n'ai pas testé, et en plus j'ai pas fait de Php depuis quelques temps
Mais en gros ca donnerait ça:
Mais en gros ca donnerait ça:
<?php define('FICHIER', 'noms.txt'); if (!isset($_POST['valider'])) { ?> <form method="POST"> Mot recherché : <input type="text" name="mot" value=""/><br/> <input type="submit" value="valider" name="valider"/> </form> <?php } else { $resultats =array(); $mot = $_POST['mot']; /* Prend le contenu du fichier d'un coup */ $content = file_get_contents(FICHIER); $pattern = '|\b' . preg_quote($mot) . '\b|i'; /* cherche combien de fois il trouve le mot, le tableau de résultat sera dans... $resultats ;-) */ $nb = preg_match_all($pattern, $content, $resultats); if ($nb > 0) { echo "$mot trouvé $nb fois"; /* remplace toutes les occurences de $mot par rien */ $content = preg_replace($pattern, "", $content); /* Réécris le tout */ file_put_contents(FICHIER, $content); echo '<ul>'; foreach ($resultats as $v) { echo "<li>$v</li>"; } echo '</ul>'; } else { die("Ce nom n'est pas présent !"); } } ?>
Je pensais que oui...mais... non!
voici ce qui reste afficher sur ma page :'(
0) { echo "'$mot' trouvé $nb fois :"; /* remplace toutes les occurences de $mot par rien */ $content = preg_replace($pattern, "", $content); /* Réécris le tout */ file_put_contents(FICHIER, $content); echo '
* '; foreach ($resultats as $v) { echo "$v
"; } echo '
'; } else { die("Ce nom n'est pas présent !"); } } ?>
j'ai essayer de fermer ou ouvrir des {} mais rien ni fait..
est tu sur que ce code peut être fonctionnel ?
voici ce qui reste afficher sur ma page :'(
0) { echo "'$mot' trouvé $nb fois :"; /* remplace toutes les occurences de $mot par rien */ $content = preg_replace($pattern, "", $content); /* Réécris le tout */ file_put_contents(FICHIER, $content); echo '
* '; foreach ($resultats as $v) { echo "$v
"; } echo '
'; } else { die("Ce nom n'est pas présent !"); } } ?>
j'ai essayer de fermer ou ouvrir des {} mais rien ni fait..
est tu sur que ce code peut être fonctionnel ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai remplacer la syntaxe ..
par sa if (0<$nb) {
mais sa bug encore sa maffiche sa sur ma page
# '; foreach ($resultats as $v) { echo "$v
"; } echo ''; } else { die("Ce nom n'est pas présent !"); } } ?>
bon jespere que la premiere syntaxe est la bonne , je vais essayer de reparer le reste
par sa if (0<$nb) {
mais sa bug encore sa maffiche sa sur ma page
# '; foreach ($resultats as $v) { echo "$v
"; } echo ''; } else { die("Ce nom n'est pas présent !"); } } ?>
bon jespere que la premiere syntaxe est la bonne , je vais essayer de reparer le reste
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
11 oct. 2009 à 00:14
11 oct. 2009 à 00:14
Avec quel éditeur tu l'as enregistré? Tu es sûr que l'extension est bien .php ?
Oui absoluement
Sous bloc note ou Adobe Dreamweaver c'est la même... pourtant les syntaxes on l'air bonne
Sous bloc note ou Adobe Dreamweaver c'est la même... pourtant les syntaxes on l'air bonne
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
11 oct. 2009 à 00:17
11 oct. 2009 à 00:17
Tu as quoi quand tu regardes la source html depuis le navigateur?
(Mets le résultat entre balises code)
(Mets le résultat entre balises code)
J'ai le html qui est normal (les boutton les cases..)
et juste en dessous
j'ai sa
# '; foreach ($resultats as $v) { echo "$v
"; } echo ''; } else { die("Ce nom n'est pas présent !"); } } ?>
et quand j'avais pas modifier la premiere syntaxe javais tout le code a partir de if (0<$nb) {
C'est bizzare quand meme
et juste en dessous
j'ai sa
# '; foreach ($resultats as $v) { echo "$v
"; } echo ''; } else { die("Ce nom n'est pas présent !"); } } ?>
et quand j'avais pas modifier la premiere syntaxe javais tout le code a partir de if (0<$nb) {
C'est bizzare quand meme
ooops
Sa venais de mon serveur
en fait la seul erreur que genere le code
c sa
Fatal error: Call to undefined function: file_put_contents() in /home/sites/xxxxxxxx/public_html/ip/mot2.php on line 30
Sa venais de mon serveur
en fait la seul erreur que genere le code
c sa
Fatal error: Call to undefined function: file_put_contents() in /home/sites/xxxxxxxx/public_html/ip/mot2.php on line 30
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
11 oct. 2009 à 00:33
11 oct. 2009 à 00:33
En ce cas, remplaces ça par
$fp = fopen(FICHIER, "w") or die("gnagnagna"); fwrite($fp, $content); fclose($fp);
Voici la source complète qui fonctionne maintenant :
<?php
define('FICHIER', 'noms.txt');
if (!isset($_POST['valider'])) {
?>
<form method="POST">
Mot recherché : <input type="text" name="mot" value=""/><br/>
<input type="submit" value="valider" name="valider"/>
</form>
<?php
} else {
$resultats =array();
$mot = $_POST['mot'];
/* Prend le contenu du fichier d'un coup */
$content = file_get_contents(FICHIER);
$pattern = '|\b' . preg_quote($mot) . '\b|i';
/* cherche combien de fois il trouve le mot, le tableau de résultat sera dans... $resultats ;-) */
$nb = preg_match_all($pattern, $content, $resultats);
if ($nb > 0) {
echo "$mot trouvé $nb fois";
/* remplace toutes les occurences de $mot par rien */
$content = preg_replace($pattern, "", $content);
/* Réécris le tout */
$fp = fopen(FICHIER, "w") or die("gnagnagna");
fwrite($fp, $content);
fclose($fp);
echo '<ul>';
foreach ($resultats as $v) {
echo "<li>$v</li>";
}
echo '</ul>';
} else {
die("Ce nom n'est pas présent !");
}
}
?>
Je sais que sur les forums en cherchant sur google, pas mal de monde cherche une solution similaire , je te remercie enorement Killian , c'est pas façile le php quand on débute :)
Je posterai a nouveau la source inchallah quand j'orais tout compléter & terminer.
<?php
define('FICHIER', 'noms.txt');
if (!isset($_POST['valider'])) {
?>
<form method="POST">
Mot recherché : <input type="text" name="mot" value=""/><br/>
<input type="submit" value="valider" name="valider"/>
</form>
<?php
} else {
$resultats =array();
$mot = $_POST['mot'];
/* Prend le contenu du fichier d'un coup */
$content = file_get_contents(FICHIER);
$pattern = '|\b' . preg_quote($mot) . '\b|i';
/* cherche combien de fois il trouve le mot, le tableau de résultat sera dans... $resultats ;-) */
$nb = preg_match_all($pattern, $content, $resultats);
if ($nb > 0) {
echo "$mot trouvé $nb fois";
/* remplace toutes les occurences de $mot par rien */
$content = preg_replace($pattern, "", $content);
/* Réécris le tout */
$fp = fopen(FICHIER, "w") or die("gnagnagna");
fwrite($fp, $content);
fclose($fp);
echo '<ul>';
foreach ($resultats as $v) {
echo "<li>$v</li>";
}
echo '</ul>';
} else {
die("Ce nom n'est pas présent !");
}
}
?>
Je sais que sur les forums en cherchant sur google, pas mal de monde cherche une solution similaire , je te remercie enorement Killian , c'est pas façile le php quand on débute :)
Je posterai a nouveau la source inchallah quand j'orais tout compléter & terminer.