2010-02-07 10 views
7

Estoy recibiendo el siguiente mensaje para algunos php tengo que usar, pero no escribí:¿Cómo reemplazar ereg?

Deprecated: Function ereg() is deprecated in /opt/lampp/htdocs/webEchange/SiteWeb_V5/inc/html2fpdf.php on line 466 

Ésta es la línea 466:

if(ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3)) 

He intentado simplemente reemplazando con preg_match, pero couldn 't reconoce el modificador = en la expresión regular ... Todavía no soy muy bueno con la expresión regular y para resolver esto necesito aprender las necesidades de expresiones regulares regulares y las necesidades de preg_match de expresiones regulares (que, si no me equivoco, es diferente) ... ¿Podrían ayudarme con esto?

Gracias

+0

duplicado posible de [? ¿Cómo puedo convertir expresiones Ereg a preg en PHP] (https://stackoverflow.com/questions/6270004/how-can-i-convert-ereg-expressions-to- preg-in-php) – Meloman

Respuesta

6

POSIX expresiones regulares extendidas (POSIX ERE, utilizado por ereg) y expresiones regulares de Perl-combatible (PCRE, utilizado por preg_match) son muy similar. Excepto desde some special POSIX expressions, PCRE es un superconjunto de POSIX ERE.

Eso significa que usted sólo tiene que poner sus expresiones regulares POSIX ERE en delimiters (aquí /) y escapar de cualquier ocurrencia de ese carácter dentro de la expresión regular y tiene una validez PCRE expresión regular:

/^([^=]*)=["']?([^"']*)["']?$/ 

Así :

preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/', $v, $a3) 
+0

No realmente un superconjunto (además de las clases de caracteres), p. haciendo coincidir '/ AB | ABC /' en 'ABCD' con ERE dará la coincidencia más larga (' ABC') pero PCRE dará la primera coincidencia ('AB'). – kennytm

2

Probar:

if(preg_match('~^([^=]*)=["\']?([^"\']*)["\']?$~',$v,$a3)) 

la expresión regular en preg_match necesita ser encerrado entre un par de delimitadores, que no es el caso con la función ereg desuso().

0

la familia preg_ espera que la expresión regular sea delimitada. En lugar de:

'^([^=]*)=["\']?([^"\']*)["\']?$' 

intento:

'/^([^=]*)=["\']?([^"\']*)["\']?$/' 
Cuestiones relacionadas