Fonction php

Bonjour,
j'ai créé une fonction pour faire un petit regex...

regex.php :
<?php

function regex($texte){
    
    if(empty($texte)){echo "Ya rien";}
    
    else{           

    $texte = preg_replace('#\à#', '&agrave;', $texte);
    $texte = preg_replace('#\ç#', '&ccedil;', $texte);
    $texte = preg_replace('#\è#', '&egrave;', $texte);
    $texte = preg_replace('#\é#', '&eacute;', $texte);
    $texte = preg_replace('#\ê#', '&ecirc;', $texte);
    $texte = preg_replace('#\ô#', '&ocirc;', $texte);
    $texte = preg_replace('#\ù#', '&ugrave;', $texte);
    $texte = preg_replace('#\<#', '<', $texte);
    $texte = preg_replace('#\€#', '&euro;', $texte);
    $texte = preg_replace('#\©#', '&copy;', $texte);
    $texte = preg_replace('#\û#', '&ucirc;', $texte);
    
    echo "<br>traduction faites en HTML";}
      
}

?>


mon problème, c'est que une fois que je l'inclue dans une page, ça ne marche pas... au moment de l'echo, rien ne s'affiche... y a-t-il une erreur??

testregex.php :
<?php
//include('private/regex.php');
require_once('private/regex.php');

$desc = $_POST["desc"];
$desc = regex($desc);
$desc = htmlentities($desc);
echo $desc;
?>
Configuration: Windows
Firefox 3.0.5

9 réponses

  1. Contributeur
    pourquoi faire ca?

    $desc = $_POST["desc"];
    $desc = regex($desc);
    $desc = htmlentities($desc);

    pourquoi tu fais pas:

    $desc = htmlentities(regex($POST['desc']));

    ????
    1. clair !! en plus ça coute chère les expressions régulières !!
  2. j'ai meme retrouve un ancienne fonction que j'avais faites assez complète avec ça tu devrais t'en sortir

    function removeAccents($string)
    {
    			$string = str_replace("à", "a", $string);
    			$string = str_replace("á", "a", $string);
    			$string = str_replace("â", "a", $string);
    			$string = str_replace("ã", "a", $string);
    			$string = str_replace("ä", "a", $string);
    			$string = str_replace("å", "a", $string);
    			$string = str_replace("é", "e", $string);
    			$string = str_replace("è", "e", $string);
    			$string = str_replace("ê", "e", $string);
    			$string = str_replace("ë", "e", $string);
    			$string = str_replace("ì", "i", $string);
    			$string = str_replace("í", "i", $string);
    			$string = str_replace("î", "i", $string);
    			$string = str_replace("ï", "i", $string);
    			$string = str_replace("ò", "o", $string);
    			$string = str_replace("ó", "o", $string);
    			$string = str_replace("ô", "o", $string);
    			$string = str_replace("õ", "o", $string);
    			$string = str_replace("ö", "o", $string);
    			$string = str_replace("ø", "o", $string);
    			$string = str_replace("ù", "u", $string);
    			$string = str_replace("ú", "u", $string);
    			$string = str_replace("û", "u", $string);
    			$string = str_replace("ü", "u", $string);
    			$string = str_replace("ÿ", "y", $string);
    			$string = str_replace("ñ", "n", $string);
    			$string = str_replace("ç", "c", $string);
    			$s = array("/", "&", "?", ",", ".", ";", ":", "!", "§", "%", "*", "µ", "¤", "$", "£", "^", "¨", ")", "(", "~", "'", '"', "{", "}", "[", "]", "|", "`", "_", "@", "°", "+", "=");
    			$string = str_replace($s, "", $string);
    			$string = str_replace(" ", "-", $string);
    		
    			$string = preg_replace("([-]+)", "-", $string);
    			$string = preg_replace("([-]$)", "", $string);
    		
    return $string;
    }
    1. bsr voici plus simple

      function convert_accent($texte)
       {
       $texte=str_replace('é','&eacute;',$texte);
       $texte=str_replace('è','&egrave;',$texte);
       $texte=str_replace('à','&agrave;',$texte);
       $texte=str_replace('°','&deg;',$texte);
       return $texte;
      
       } 
      1. pas besoin de str_replace non plus ^^

        de plus, un tableau serrais mieux pour ta fonction je pense
        1. pour les fonctions j'ai pioché dans mes archives, et un tableau ?? pourquoi faire simple quand on peut faire compliqué.. lol!!
      2. merci mais en fait c'est pas au niveau de la fonction que ça bug, c'est quand la fonction est incorporé à un autre code php...

        <?php
        //include('private/regex.php');
        require_once('private/regex.php');
        
        $desc = $_POST["desc"];
        $desc = regex($desc);
        $desc = htmlentities($desc);
        echo $desc;
        ?>
        


        c'est comme si $desc se vidait une fois passé dans la fonction regex()... parce que plus tard, je souhaite l'incorporer dans un "input"... sauf que rien ne s'affiche au moment du "echo $desc;"...
        1. tu est sur du chemin de ton fichier require_once('private/regex.php'); ?? il manquerait pas desfois un petit ../
          1. une autre question en passant...

            j'ai trouvé un autre moyen pour encoder les caractères spéciaux :

            $description = $test['description'];
            $trans = get_html_translation_table(HTML_ENTITIES);
            $description = htmlentities(strtr($description, $trans));
            


            et le tout enregistré dans une base de données...
            par contre, au moment de "echo $description", ça reste encodé en HTML à l'affichage... comment fait-on pour le remettre en caractère spéciaux??
            1. je suis sur de mon chemin... sinon il y aurait de toute facon une erreur affiché sinon...