2010-09-17 3 views
0

Essayer de vérifier la chaîne pour le motif.La correspondance d'expression régulière PHP donne une erreur

$variable = '[text]'; 

if (eregi("/(\[(.*?)\])/", $variable)) {} 

Ce code donne erreur eregi() [function.eregi]: REG_BADRPT

Quelle est la solution pour cela?

+2

Pourquoi utilisez-vous eregi? Du manuel: * Cette fonction a été dépréciée à partir de PHP 5.3.0. S'appuyer sur cette fonctionnalité est fortement déconseillé. * Http://www.php.net/manual/fr/function.eregi.php –

Répondre

2

C'est parce que vous utilisez une expression de style preg dans eregi. Vous n'avez pas besoin des délimiteurs de style Perl. Toutefois, comme Mark Byers l'a fait remarquer, l'utilisation de preg_match est une solution à venir.

<?php 
$variable = '[text]'; 

if (preg_match("/(\[(.*?)\])/", $variable)) { 
    echo 'ok'; 
} 
0

Juste pour clarifier les choses, le style de perles délimiteurs sont les deux barres obliques. C'est ce que la syntaxe de ereg ressemble:

<?php 
$str = 'abc'; 
if (ereg('a', $str)) 
{ 
    echo 'match found'; // match found 
} 
?> 

Je n'ai pas utilisé une expression régulière, comme vous le feriez normalement, juste pour garder les choses simples.

Je tiens également à mentionner qu'il existe des fonctions ereg multi-octets qui sont toujours valides, par exemple mb_ereg.

Questions connexes