# PHP : réécrire une fonction

**URL:** <https://www.debian-fr.org/t/php-reecrire-une-fonction/80753>\
**Category:** Programmation\
**Created:** [Décembre 6, 2019, 2:17 UTC](https://www.debian-fr.org/t/php-reecrire-une-fonction/80753 "2019-12-06T14:17:04Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jhfra](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/eb9ed0/32.png) [@jhfra](https://www.debian-fr.org/u/jhfra)\
**Post date:** [Décembre 6, 2019, 2:17 UTC](https://www.debian-fr.org/t/php-reecrire-une-fonction/80753/1 "2019-12-06T14:17:04Z")

</div>

Hello,

Voici mon problème : j’hérite du développement d’une vieille application assez crado niveau code, et mon prédécesseur ne semblait pas vraiment à l’aise avec les histoires d’encodages… Disons que lorsqu’il éditait du code depuis windows, qu’il uploadait sur un serveur dont l’encodage était en utf-8, il semblait un peu perdu et la seule solution qu’il trouvait était, non pas de convertir proprement son fichier, mais de faire appel à la fonction **utf8\_decode** pour pouvoir afficher proprement ses caractères spéciaux en ISO-8859-1.

Ce qui me donne un peu partout des appels du type :

```nohighlight
$DESCRIPTION=utf8_decode(POST_REQUEST("DESCRIPTION",""));

$T[0]=utf8_decode("Toutes les régions");

```

etc…

Etant en préparation d’un serveur tout propre et préparant justement la migration de l’appli sur ce serveur, je dois me débarrer de l’usage de utf8\_decode dans tout mon code PHP, puisqu’en l’état, l’appel de cette fonction fiche en l’air l’affichage des caractères spéciaux…

Et c’est là que je suis moins à l’aise.

J’ai pensé à deux solutions :

1. Faire croire à PHP que utf8\_decode est une fonction à moi, réécrire cette fonction quelquepart pour lui dire qu’à chaque fois qu’elle est appelé, elle fait juste un echo ou un print de ce qu’on lui donne à becter sans traitement supplémentaire.

2. Une belle regex dans tout mon code pour transformer :

`utf8_decode(contenu)` en `contenu`

Mais là j’aurais besoin d’aide pour le sed, car dans ce sens je ne vois pas du tout comment faire…

J’ai essayé des variantes de ça, mais sans succès :

```nohighlight
sed --sandbox s/utf8_decode\(.*\)/.*/g monfichier.php

```

Quelqu’un aurait une idée ?

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Décembre 6, 2019, 3:47 UTC](https://www.debian-fr.org/t/php-reecrire-une-fonction/80753/2 "2019-12-06T15:47:44Z")

</div>

Un truc dans le genre :

```auto
sed --sandbox -r 's/utf8_decode\((.*)\)/\1/g' monfichier.php

```

---

<div class="post-metadata">

**Author:** ![jhfra](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/eb9ed0/32.png) [@jhfra](https://www.debian-fr.org/u/jhfra)\
**Post date:** [Décembre 6, 2019, 4:46 UTC](https://www.debian-fr.org/t/php-reecrire-une-fonction/80753/4 "2019-12-06T16:46:37Z")

</div>

Oui, quasiment, en fait c’est ça que je cherchais :

```nohighlight
echo '$T[2]=utf8_decode(POST_REQUEST("VILLE",""));' | sed -r 's#utf8_decode\((.*?)\)#\1#g'

```

Merci !
