Fonction de surlignage de texte et eregi_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 : Fonction de surlignage de texte et eregi_replace

Re: Fonction de surlignage de texte et eregi_replace

par fab » 06 nov. 2009, 22:07

Si c'est bon après tout dépend de l'utilisation que tu fais de ta fonction, car si $needle est vide suivant comment tu utilisates ta fonction tu risques d'avoir des messages d'erreurs vaut mieux retourner quelque chose même si c'est '' :)

Re: Fonction de surlignage de texte et eregi_replace

par visualight » 06 nov. 2009, 21:58

J'ai fait comme ça et ça marche ... mais peut être n'est-ce pas la bonne méthode ?
function highlight($needle, $replace, $haystack) {
    if (!empty ($needle)) {
     $haystack = eregi_replace($needle,$replace,$haystack);
    } 
 return $haystack;
}

Re: Fonction de surlignage de texte et eregi_replace

par visualight » 06 nov. 2009, 21:10

Merci pour ta réponse Fab.

Dans le cas où je tape un espace dans le champ du formulaire de recherche,

var_dump($needle); ==> Renvoie : string(0) ""
var_dump($replace); ==> Renvoie : string(64) ""

Pour infos :
$needle = $_POST['search'] ;
// $replace = 64 caratcères sans la variable $searchitem
$replace = '<b><font style='color:white; background-color:blue;'>" . $searchitem . "</font></b>';
$needle peut donc être vide ==> ''
ou comporter un ou plusieurs espaces ==> ' '

Que dois je modifier pour éviter l'erreur :
Warning: eregi_replace() [function.eregi-replace]: REG_EMPTY in /home/a90/www/search.php on line 48 ?

Merci pour ton aide précieuse,
Raph

Re: Fonction de surlignage de texte et eregi_replace

par fab » 06 nov. 2009, 19:47

Je suis allé un peu vite en croyant que c'était haystack le problème désolé c'est ma faute

tu peux faire un var_dump() et $needle et $replace ?

Re: Fonction de surlignage de texte et eregi_replace

par visualight » 06 nov. 2009, 19:04

J'ai essayé en implémentant le code strlen mais rien n'y fait :
47 : function highlight($needle, $replace, $haystack) {
48 : if(!strlen($haystack)) return '';
49 : $haystack = eregi_replace($needle,$replace,$haystack);
50 : return $haystack;
51 : }
Toujours la même erreur. Mais peut être je m'y prend mal ...
Pouvez-vous m'orienter ?

Merci

PS ==> Pour votre indication : Dans mon champ "search" (champ du formulaire de recherche) pour afficher l'erreur que j'ai, je ne laisse pas le champ vide MAIS je fais un espace sans rien d'autre.

La variable renvoyée est donc : $_POST['search'] == ' ' ; et non $_POST['search'] == '';

Re: Fonction de surlignage de texte et eregi_replace

par fab » 06 nov. 2009, 18:44

AS tu au moins cherché a comprendre d'ou venait l'erreur?

Si la chaine $haystack est vide ton code ne sert plus a rien mais dans ta fonction pour éviter ce message d'erreur tu peux rajouter un
if(!strlen($haystack)) return '';

Fonction de surlignage de texte et eregi_replace

par visualight » 06 nov. 2009, 17:45

Bonjour, je suis entrain d'essayer de modifier une fonction qui permet le surlignage de code (pour une recherche par exemple).
Je suis confronté à une erreur lorsque je renvoie une valeur vide (ou espace) à la fonction :

Warning: eregi_replace() [function.eregi-replace]: REG_EMPTY in /home/a90/www/search.php on line 48

Comment éviter cette erreur ?
J'ai essayé comme ceci mais ça n'arrange rien : if (!eregi_replace($needle,$replace,$haystack)) {

Voici la fonction
47 : function highlight($needle, $replace, $haystack) {
48 : $haystack = eregi_replace($needle,$replace,$haystack);
49 : return $haystack;
50 : }
Merci pour l'aide,
raph