[PHP] Preg replace

Fermé
Utilisateur anonyme - 17 déc. 2010 à 13:47
 Krozer - 17 déc. 2010 à 14:12
Bonjour,
Voici un script que j'ai téléchargé :
<?php

function commentaire_final() {
	$text = ':) :( X-( [u][email]webmaster@mon_site.com[/email] [/u]';
	include('smiley.conf.php');
			/* coupe les longue chaine de caracteres */
            $chaine_texte = preg_replace('/([^ ]{100})/si','\\1'.' ', $text);
            /* traitement des liens */
            $chaine_texte = stripslashes(nl2br(htmlspecialchars($chaine_texte)));
            $chaine_texte = ereg_replace("\[url\]http://([^>]*)\[/url\]", "<A class=minilien HREF=\"http://\\1\" TARGET=\"_blank\">\\1</A>", $chaine_texte);
            $chaine_texte = ereg_replace("\[email\]([^>]*)\[/email\]", "<A class=minilien HREF=\"mailto:\\1\" TARGET=\"_blank\">\\1</A>", $chaine_texte);
            $chaine_texte = ereg_replace("\[b\]([^>]*)\[/b\]", "<b>\\1</b>", $chaine_texte);
            $chaine_texte = ereg_replace("\[i\]([^>]*)\[/i\]", "<i>\\1</i>", $chaine_texte);
            $chaine_texte = ereg_replace("\[u\]([^>]*)\[/u\]", "<u>\\1</u>", $chaine_texte);

            /* compatibiliter avec l'ancien mode de lien */
            $chaine_texte = preg_replace("/<((http|https|ftp):\/\/[a-z0-9;\/\?:@=\&\$\-_\.\+!*'\(\),]+?)>/i", "<a class=minilien target=_blank href=\"$1\">$1				            </a>", $chaine_texte);
			souriez($chaine_texte);
				}
	commentaire_final();
?>

En fait, il est censé afficher le texte de la variable texte, mais à la place, il affiche :
'; $chaine_texte = str_replace($souriez[$i][0], $chaineImage, $chaine_texte); } echo $chaine_texte; } ?>
Deprecated: Function ereg_replace() is deprecated in C:\wamp\www\csforum90\test.php on line 10

Deprecated: Function ereg_replace() is deprecated in C:\wamp\www\csforum90\test.php on line 11

Deprecated: Function ereg_replace() is deprecated in C:\wamp\www\csforum90\test.php on line 12

Deprecated: Function ereg_replace() is deprecated in C:\wamp\www\csforum90\test.php on line 13

Deprecated: Function ereg_replace() is deprecated in C:\wamp\www\csforum90\test.php on line 14

Fatal error: Call to undefined function souriez() in C:\wamp\www\csforum90\test.php on line 18

Pourriez-vous m'aider à faire fontionner ce maudit script ?
Merci et aurevoir, seb


A voir également:

2 réponses

Salut,

Dans les commandes ereg_replace retire l'anti slash en trop devant les doubles cotes à la fin du premier paramètre.

 $chaine_texte = ereg_replace("\[url\]http://([^>]*)\/url\", "<A class=minilien HREF=\"[http://]\\1\" TARGET=\"_blank\">\\1</A>", $chaine_texte);
1
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
17 déc. 2010 à 14:08
Bonjour,

Alors, les explications : le script téléchargé est un vieux machin qui n'est plus à jour, et la fonction en question est considérée comme obsolète.

Tu as deux possibilités :
Soit tu dis à php de fonctionner quand même
Soit tu remets le script au goût du jour.

La documentation de php.net (https://www.php.net/manual/fr/function.ereg-replace.php dit à ce sujet :
Note:
À partir de PHP 5.3.0, l'extension regex est obsolète et vous devez utiliser l'extension PCRE à la place. Appeler des fonctions de l'extension regex émettra des alertes de type E_DEPRECATED. Voir la liste des différences pour vous aider dans la conversion en PCRE.

Xavier

PS : Tu peux aussi masquer les erreurs de type Deprecated de façon ponctuelle juste avant ton script :
ini_set("error_reporting", "E_ALL ^ E_DEPRECATED");
Ça devrait fonctionner.
0