Rechercher/remplacer avec php+mySQL
10 messages
• Page 1 sur 1
-

HawkEye - WRInaute accro

- Messages: 17013
- Inscription: 23 Fév 2004
Rechercher/remplacer avec php+mySQL
Hello,
Je suis confronté à une petite difficulté, mais je pense qu'il y'a du monde ici qui saura comment faire.
J'ai d'une part une table de plusieurs centaines de lignes, sur deux colonnes:
[ champ1 | champ2 ]
J'ai d'autre part un texte, contenu dans $texte
Je voudrais pouvoir faire l'output de $texte_mod sachant que $texte_mod correspond à $texte, duquel chaque string qui correspond à une valeur de "champ1" aura été remplacé par l'équivalent de "champ2".
D'avance merci pour votre aide.
Je suis confronté à une petite difficulté, mais je pense qu'il y'a du monde ici qui saura comment faire.
J'ai d'une part une table de plusieurs centaines de lignes, sur deux colonnes:
[ champ1 | champ2 ]
J'ai d'autre part un texte, contenu dans $texte
Je voudrais pouvoir faire l'output de $texte_mod sachant que $texte_mod correspond à $texte, duquel chaque string qui correspond à une valeur de "champ1" aura été remplacé par l'équivalent de "champ2".
D'avance merci pour votre aide.
-

siddhy - WRInaute discret

- Messages: 163
- Inscription: 20 Sep 2004
Salut,
et avec un strtr ?
et avec un strtr ?
- Code: Tout sélectionner
<?php
$trans = array("bonjour" => "salut", "salut" => "bonjour");
echo strtr("salut à tous, j'ai dit bonjour", $trans);
?>
-

HawkEye - WRInaute accro

- Messages: 17013
- Inscription: 23 Fév 2004
J'ai une fonction existante, comme ceci:
...fonctionne bien, mais je ne sais pas comment alimenter $changes à la suite d'une requête, plutôt que comme ici "statique"...
- Code: Tout sélectionner
function makechanges($text) {
$changes= array(
'this' => 'that',
'here' => 'there'
);
return str_replace( array_keys($corrections), array_values($changes), $text );
}
...fonctionne bien, mais je ne sais pas comment alimenter $changes à la suite d'une requête, plutôt que comme ici "statique"...
- ACth
- WRInaute impliqué

- Messages: 795
- Inscription: 11 Nov 2006
Pour un truc temporaire, vite fait ...
Tu déclare en haut ta variable en global :
Ensuite tu gère la modification de ta variable et y a plus cas !
Sinon, tu peux aussi passer $changes en paramètre, tout comme $text.
Tu déclare en haut ta variable en global :
- Code: Tout sélectionner
global $changes;
Ensuite tu gère la modification de ta variable et y a plus cas !
- Code: Tout sélectionner
// début du script (du moins avant la "boucle")
global $changes;
// ta fonction
function makechanges($text) {
return str_replace( array_keys($corrections), array_values($changes), $text );
}
// requete
........
// modification de la variable $changes
$changes= array(
'this' => 'that',
'here' => 'there'
);
// appel de la fonction
....
// et on recommence
....
Sinon, tu peux aussi passer $changes en paramètre, tout comme $text.
-

DreamJap - WRInaute discret

- Messages: 114
- Inscription: 6 Mai 2005
Essaye ça :
- Code: Tout sélectionner
$changes = array();
req = mysql_query("SELECT champ1, champ2 FROM table");
while( $donnees = mysql_fetch_assoc($req) ) {
$champ1 = $donnees['champ1'];
$changes[$champ1] = $donnees['champ2'];
}
$text_mod = str_replace( array_keys($corrections), array_values($changes), $text );
- NextGeneration
- WRInaute occasionnel

- Messages: 428
- Inscription: 27 Sep 2006
lis la doc php sur ces fonctions :
ob_start();
ob_end_*();
notemment, tu peux leur passer une fonction filtrante.
Ca me parait le plus adapté à ton cas.
ob_start();
ob_end_*();
notemment, tu peux leur passer une fonction filtrante.
Ca me parait le plus adapté à ton cas.
- NextGeneration
- WRInaute occasionnel

- Messages: 428
- Inscription: 27 Sep 2006
tiens, un exemple tout cuit:
<?php
function callback($buffer)
{
// remplace toutes les pommes par des carottes
return (ereg_replace("pommes de terre", "carottes", $buffer));
}
ob_start("callback");
?>
<html>
<body>
<p>C'est comme comparer des carottes et des pommes de terre.</p>
</body>
</html>
<?php
ob_end_flush();
?>
<?php
function callback($buffer)
{
// remplace toutes les pommes par des carottes
return (ereg_replace("pommes de terre", "carottes", $buffer));
}
ob_start("callback");
?>
<html>
<body>
<p>C'est comme comparer des carottes et des pommes de terre.</p>
</body>
</html>
<?php
ob_end_flush();
?>
- NextGeneration
- WRInaute occasionnel

- Messages: 428
- Inscription: 27 Sep 2006
Solution prete a l'emploi ( mélange de la méthode ob_ et de posts plus haut )
<?php
$changes = array();
req = mysql_query("SELECT champ1, champ2 FROM table");
while( $donnees = mysql_fetch_assoc($req) ) {
$champ1 = $donnees['champ1'];
$changes[$champ1] = $donnees['champ2'];
}
function callback($buffer)
{
// remplace toutes les pommes par des carottes
return str_replace( array_keys($corrections), array_values($changes), $buffer );
}
// a partir de cette instruction, tous les mots seront replacés
ob_start("callback");
?>
<?php
ob_end_flush();
// fin du remplacement
?>
<?php
$changes = array();
req = mysql_query("SELECT champ1, champ2 FROM table");
while( $donnees = mysql_fetch_assoc($req) ) {
$champ1 = $donnees['champ1'];
$changes[$champ1] = $donnees['champ2'];
}
function callback($buffer)
{
// remplace toutes les pommes par des carottes
return str_replace( array_keys($corrections), array_values($changes), $buffer );
}
// a partir de cette instruction, tous les mots seront replacés
ob_start("callback");
?>
<?php
ob_end_flush();
// fin du remplacement
?>
10 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Expression régulière pour rechercher/remplacer Dreamweaver
- [MySQL] rechercher une valeur dans un champ sérialisé
- Remplacer too.php par tutu.php avec ajout 1 parametre en plu
- Remplacer un switch php
- PHP Rechercher un mot dans un dossier de pages html
- rechercher dans les fichiers php avec windows xp
- Script php permettant de rechercher des vidéos sur internet
- [PHP-MySQL] : argument is not a valid MySQL ressource
- Remplacer un bout de chaine php
- Remplacer un résultat par un autre en php
- Tiret ou underscore ? Enfin la réponse ! - 14-08-2004
- Gestion des langues et des sessions en PHP / MySQL - 02-05-2004
- AdSense Tracking : statistiques détaillées sur les clics AdSense - 29-02-2004
- Google lance le Desktop Search - 14-10-2004
- Passage à l'heure d'été/hiver sur un forum phpBB - 31-10-2010
- Design de WRI version 3 - 05-09-2005
- Script de mise en cache des pages (PHP MySQL) - 09-08-2010
- GoogleStats : analyse temps réel des visites de Google sur votre site - 02-10-2002
Consultez la description détaillée des produits ou services de Google suivants : Google 3D Warehouse
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

