camelion_
Messages postés11Date d'inscriptionvendredi 9 mars 2007StatutMembreDernière intervention29 janvier 2010 2 déc. 2007 à 13:19
salut
se sont de tres bon codes que tu a la
je cherche a modifier un ficher en cherchant des mots clef que je veux
ces mots seront stoké dans un tableau
tout ce que j'en ai besoin c'est :'comment parcourir une chaine de caracteres et stoké les mots delimiter par des caractere speciaux comme < et > dans un tableau '
par la suite j'utiliserai ma fonction qui est comme suit
function replaceChaine($Texte,$Tchamps,$Ttaille){
/*
$text =>le texte ou on fera la reherce
$Tchamps => tableau des carracteres a modifier
$Ttaille => la taille de tableau contenant les elements a modifier
*/
for($i=0;$i<$Ttaille;$i++){
$champs=$Tchamps[$i];//la chaine a remplacer
$Texte = ereg_replace($champs,"\\0",$Texte);
}//end for
echo"$Texte";
}//end function
brex74
Messages postés4Date d'inscriptionlundi 8 mars 2004StatutMembreDernière intervention 8 octobre 2007 8 oct. 2007 à 12:48
Bonjour, je ne sais pas si je m'y prend mal ou quoi mais chez moi le résultat est plutôt décevant.
Visuellement la coloration marche très bien mais lorsque je regarde le code html généré, c'est un peu plus délicat.
Pour un tableau de mot passé en paramètres :
var $mon_array = array('/flash/', '/2D/','/illustration/', Animations Flash/');
$mots_cles_color ="2D";
et je récupère le résultat html suivant : (j'ai changé la source en modifiant le par un
flash, 2D, illustration, Animations Flash
Est-ce bien normal ? Je crois que seul le mot "2D" dois être entouré par le mais je ne vois pas d'ou viens l'erreur...
Merci de votre aide.
brex
cs_iomega
Messages postés144Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention 1 septembre 2008 9 déc. 2005 à 15:34
Ok merci beaucoup a+
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 9 déc. 2005 à 15:22
POUR L'AFFICHAGE DE L'EXEMPLE :
Faites comme ça (et en plus ce sera plus joli) :
/*---------------- remplacement -----------------*/
echo 'Résultat de la recherche :';
echo '';
$i=1;
while( $d = mysql_fetch_assoc($res) ) {
echo \"Resultat {$i++}
\n\";
$d = colorer($m, $d, '@Id|pouet@');
foreach( $d as $k=>$v ) echo \" * $k : $v\n";
}
echo '
';
/*----------- fin du remplacement ----------------*/
cs_iomega
Messages postés144Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention 1 septembre 2008 9 déc. 2005 à 14:58
Désolé, mais effectivement j'ai changer ta ligne
//echo str_replace('',' ',nl2br(print_r($d, true)));
par
echo str_replace('',' ',nl2br(print($d)));
car j'avais ce message d'erreur Warning: Wrong parameter count for print_r()
cs_iomega
Messages postés144Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention 1 septembre 2008 9 déc. 2005 à 14:54
Hello oui , j'ai juste ajouter mes champs, il m'affiche bien le nombre de ligne exacte de ma requete mais il me retourne pour chaque ligne array1
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 9 déc. 2005 à 14:47
malalam => tu as raison... indégnable
Iomega => Non, aucune idée... Mais tu n'as pas pu utiliser mon exemple tel quel ! Alors, qu'as tu fais ? (PS : correspond par messages)
cs_iomega
Messages postés144Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention 1 septembre 2008 9 déc. 2005 à 14:31
Hello j'ai essayé ton exemple mais voici le resultat
Array1
As-tu une idée ?
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 9 déc. 2005 à 13:37
FhX => si tu veux...
Quoique non !
Pour ne pas colorer les champs avec des '0' (zéro) tu peux entrer la regexp suivante : '0' (oui, tu peux aussi faire '/0/', mais '0' le fait)
Idem : si on ne veut pas colorer les champs avec des espaces ' '.
Et par malheur (' '==false) et ('0'==false) sont vraies.
Bon, le mec qui rentre ce genre de RegExp cherche un peu la bagarre, d'accord! Enfin, on peut tomber sur des tarés ! (moi même... défois)
autant bien différencier la varialbe par défaut d'une variable entrée.
A+
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 9 déc. 2005 à 13:25
"if( $avoid!==false and is_array($texte) ) {"
>
if ( $avoid and is_array($texte) ) {
Pas besoin de mettre !== false dans ce cas la :)
Pas mal du tout :)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 9 déc. 2005 à 12:36
C'est très joli :-)
Rien à redire pour le moment, à priori :-)
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 9 déc. 2005 à 12:02
/* !!!!! Pour éviter l'injection SQL (techinque de hacking) !!!!! */
/* !!!!! N'OUBLIER PAS D'ECHAPPER LES DONNEES PROVENANT DU CLIENT !!!!! */
/* !!!!! avec stripslashes() ou mysql_real_escape() ou ... !!!!! */
// définitions
$texte = (isset($_POST['texte']) ? ''; // provient d'un formulaire !!!
$champs = array( Id, Sujet, Message, pouet ); // peut provenir du formulaire
$table = 'maTable'; // peut aussi vernir du formulaire...
$order = 'Id asc'; // idem
// constitution de la requète
$mots = mots($texte);
$cond = '1'; // par défaut : pas de condition
$sel = '*'; // par défaut, tous les champs de la table
foreach( $champs as $c ) {
if($cond!='1') $cond.= ' or ';
foreach( $mots as $m ) {
if($cond=='1') $cond = '';
else $cond.= ' or ';
$cond.= "$c like'%$m%'";
}
2 déc. 2007 à 13:19
se sont de tres bon codes que tu a la
je cherche a modifier un ficher en cherchant des mots clef que je veux
ces mots seront stoké dans un tableau
tout ce que j'en ai besoin c'est :'comment parcourir une chaine de caracteres et stoké les mots delimiter par des caractere speciaux comme < et > dans un tableau '
par la suite j'utiliserai ma fonction qui est comme suit
function replaceChaine($Texte,$Tchamps,$Ttaille){
/*
$text =>le texte ou on fera la reherce
$Tchamps => tableau des carracteres a modifier
$Ttaille => la taille de tableau contenant les elements a modifier
*/
for($i=0;$i<$Ttaille;$i++){
$champs=$Tchamps[$i];//la chaine a remplacer
$Texte = ereg_replace($champs,"\\0",$Texte);
}//end for
echo"$Texte";
}//end function
8 oct. 2007 à 12:48
Visuellement la coloration marche très bien mais lorsque je regarde le code html généré, c'est un peu plus délicat.
Pour un tableau de mot passé en paramètres :
var $mon_array = array('/flash/', '/2D/','/illustration/', Animations Flash/');
$mots_cles_color ="2D";
j'execute la fonction comme ceci :
$mots_cles = colorer($mots_cles_color, $mon_array);
et je récupère le résultat html suivant : (j'ai changé la source en modifiant le par un
flash, 2D, illustration, Animations Flash
Est-ce bien normal ? Je crois que seul le mot "2D" dois être entouré par le mais je ne vois pas d'ou viens l'erreur...
Merci de votre aide.
brex
9 déc. 2005 à 15:34
9 déc. 2005 à 15:22
Faites comme ça (et en plus ce sera plus joli) :
/*---------------- remplacement -----------------*/
echo 'Résultat de la recherche :';
echo '';
$i=1;
while( $d = mysql_fetch_assoc($res) ) {
echo \"Resultat {$i++}
\n\";
$d = colorer($m, $d, '@Id|pouet@');
foreach( $d as $k=>$v ) echo \" * $k : $v\n";
}
echo '
';
/*----------- fin du remplacement ----------------*/
9 déc. 2005 à 14:58
//echo str_replace('',' ',nl2br(print_r($d, true)));
par
echo str_replace('',' ',nl2br(print($d)));
car j'avais ce message d'erreur Warning: Wrong parameter count for print_r()
9 déc. 2005 à 14:54
9 déc. 2005 à 14:47
Iomega => Non, aucune idée... Mais tu n'as pas pu utiliser mon exemple tel quel ! Alors, qu'as tu fais ? (PS : correspond par messages)
9 déc. 2005 à 14:31
Array1
As-tu une idée ?
9 déc. 2005 à 13:37
Quoique non !
Pour ne pas colorer les champs avec des '0' (zéro) tu peux entrer la regexp suivante : '0' (oui, tu peux aussi faire '/0/', mais '0' le fait)
Idem : si on ne veut pas colorer les champs avec des espaces ' '.
Et par malheur (' '==false) et ('0'==false) sont vraies.
Bon, le mec qui rentre ce genre de RegExp cherche un peu la bagarre, d'accord! Enfin, on peut tomber sur des tarés ! (moi même... défois)
autant bien différencier la varialbe par défaut d'une variable entrée.
A+
9 déc. 2005 à 13:25
>
if ( $avoid and is_array($texte) ) {
Pas besoin de mettre !== false dans ce cas la :)
Pas mal du tout :)
9 déc. 2005 à 12:36
Rien à redire pour le moment, à priori :-)
9 déc. 2005 à 12:02
////////////////////////////
// Exemeple D'utilisation //
////////////////////////////
/* !!!!! Pour éviter l'injection SQL (techinque de hacking) !!!!! */
/* !!!!! N'OUBLIER PAS D'ECHAPPER LES DONNEES PROVENANT DU CLIENT !!!!! */
/* !!!!! avec stripslashes() ou mysql_real_escape() ou ... !!!!! */
// définitions
$texte = (isset($_POST['texte']) ? ''; // provient d'un formulaire !!!
$champs = array( Id, Sujet, Message, pouet ); // peut provenir du formulaire
$table = 'maTable'; // peut aussi vernir du formulaire...
$order = 'Id asc'; // idem
// constitution de la requète
$mots = mots($texte);
$cond = '1'; // par défaut : pas de condition
$sel = '*'; // par défaut, tous les champs de la table
foreach( $champs as $c ) {
if($cond!='1') $cond.= ' or ';
foreach( $mots as $m ) {
if($cond=='1') $cond = '';
else $cond.= ' or ';
$cond.= "$c like'%$m%'";
}
if($sel=='*') $sel = '';
else $sel = ', ';
$sel = $c;
}
// votre condition pour sécurisé l'attaque de la base ! ('1' si aucune)
$secure = "Utilisateur='$?' and Archive='0' and Date>='$mois_dernier'";
// La requete, enfin !
$query = "select $sel
from $table
where ($cond) and ($secure)
order by $order;";
$res = mysql_queyr($query);
// Affichage (vite fait, mal fait)
echo 'Résultat de la recherche :';
while( $d = mysql_fetch_assoc($res) ) {
echo "<hr />\n";
// coloration
$d = colorer($m, $d, '@Id|pouet@'); // <= ne colore pas 'Id' et 'pouet'
echo str_replace('',' ',nl2br(print_r($d, true)));
}
//////////////////////
// Fin de l'exemple //
//////////////////////
?>
Voilà, ça constituerait presque une autre petite source ;)
A+
9 déc. 2005 à 09:12