Remplacer ereg_replace par preg_replace.

Fredrick
Invité n'ayant pas de compte PHPfrance

17 janv. 2011, 17:02

Bonjour,

Je viens de migrer mon serveur web sur un nouveau serveur avec une version plus récente de wamp. J'ai une application qui tourne sur ce serveur (grr) et j'ai maintenant un message d'erreur "Function ereg_replace is deprecated in ....".

Sur le net j'ai vu qu'il est possible de remplace ereg_replace par preg_replace mais je n'arrive pas à comprendre comment utiliser la syntaxe.

La ligne originale est :

$all_day = ereg_replace(" ", " ", get_vocab("all_day")) ;

POuvez-vous me donnez la syntaxe équivalente avec preg_replace() ?

Merci d'avance.

ViPHP
ViPHP | 5462 Messages

17 janv. 2011, 17:07

il faut ajouter les délimiteurs comme dit dans la doc
$all_day = preg_replace("/ /", " ", get_vocab("all_day")) ;
par contre la ca sert a rien d'utiliser cette fonction utilise str_replace
et même ca sert a rien de remplacer les espace par des &nbsp :wink:

Fredrick
Invité n'ayant pas de compte PHPfrance

17 janv. 2011, 17:45

Ok merci ça fonctionne très bien.

Je ne sais pas si c'est utile ou non mais n'étant pas un expert je préfère laisser l'appli telle qu'elle est, je veux pas tout détruire.

Encore merci :D

ViPHP
AB
ViPHP | 5818 Messages

17 janv. 2011, 18:06

Le   c'est pour avoir des espaces insécables. Effectivement ça peut servir dans certains cas...

ViPHP
ViPHP | 4039 Messages

17 janv. 2011, 18:06

mais n'étant pas un expert
Justement, nous oui. :mrgreen:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
AB
ViPHP | 5818 Messages

17 janv. 2011, 18:16

Pour compléter la réponse de Berzemus je dirai qu'il est difficile de savoir (à moins de rentrer dans les détails de l'application) si ce remplacement est indispensable ou non, par contre quand on a à le faire , le conseil de stealh32 d'utiliser str_replace est judicieux dans le sens ou cela augmente les performances. preg_replace est assez gourmand en ressource et on le réserve normalement pour des tâches plus compliquées que de remplacer simplement un caractère par un autre.

Eléphant du PHP | 256 Messages

18 janv. 2011, 00:19

Bonsoir,

Les espaces insécables servent, notamment, à afficher une typographie soignée. :) D'expérience, un str_replace marche fort bien, et est rapide. :mrgreen:

Pour la typographie, j'utilise une syntaxe du genre...
$html_source = array('\'', '’', '...', '…', ' :', ' ;', ' !', ' ?', ' %', ' ‰', ' ‱', ' €', '[', ']', '"', '  ' );
$html_target = array('’', '’', '…', '…', ' :', ' ;', ' !', ' ?', ' %', ' ‰', ' ‱', ' €', '[', ']', '"', '' );
str_replace($html_source, $html_target, $string);
Les expressions régulières sont intéressantes, par exemple, pour formater les nombres.

Sinon, j'ai conçu aussi un "typographeur" pour jQuery, à base d'expressions régulières, si ça intéresse quelqu'un. :D

Cordialement,

Gaspard

ViPHP
ViPHP | 5462 Messages

18 janv. 2011, 10:56

Bonsoir,

Les espaces insécables servent, notamment, à afficher une typographie soignée. :) D'expérience, un str_replace marche fort bien, et est rapide. :mrgreen:

Pour la typographie, j'utilise une syntaxe du genre...
$html_source = array('\'', '’', '...', '…', ' :', ' ;', ' !', ' ?', ' %', ' ‰', ' ‱', ' €', '[', ']', '"', '  ' );
$html_target = array('’', '’', '…', '…', ' :', ' ;', ' !', ' ?', ' %', ' ‰', ' ‱', ' €', '[', ']', '"', '' );
str_replace($html_source, $html_target, $string);
Les expressions régulières sont intéressantes, par exemple, pour formater les nombres.

Sinon, j'ai conçu aussi un "typographeur" pour jQuery, à base d'expressions régulières, si ça intéresse quelqu'un. :D

Cordialement,

Gaspard
fais plutôt un htmlentities dans ca cas la :wink:

Eléphant du PHP | 119 Messages

18 janv. 2011, 11:18

moi j'ai le soucis inverse, dans mon regex qui me permet d'avoir mes liens cliquables je me retrouve avec des &nbsp ou des <a href=">
$content = preg_replace('#[a-z0-9._/-?]+#i', '<a href="$0">$0</a>', $content);
resultat en generant le code source
<span class="piece_news_content"><a&nbsp;href="http: google.fr="">http://google.fr&nbsp;</a&nbsp;href="http:></span>
je ne comprend pas trop pourquoi ..