2010-06-04 5 views
2

Existe-t-il une fonction/méthode canonique pour échapper une chaîne à utiliser dans un preg_, de sorte que tous les caractères PCRE spéciaux soient interprétés comme littéraux. Au fond, une façon de savoir faire en sorte que quelque chose commeEchappement d'une chaîne à utiliser dans une expression rationnelle preg_

I am a fancy string (well, that guy ... said I was fancy) 

est transformé en

I am a fancy string \(well, that guy \.\.\. said I was fancy\) 

Le cas utiliser est quelque chose comme

$re = get_string_from_somewhere(); 
$re = our_magic_function($re); 
preg_match_all('%'.$re.'%',$string, $matches); 

Répondre

6

Je crois que preg_quote() est la réponse que vous êtes Vous cherchez ...

Si vous utilisez un délimiteur personnalisé (comme vous le faites dans votre exemple), assurez-vous de définir le second paramètre ($ delimiter) à celui utilisé dans la regex ... Donc, votre appel serait preg_quote($string, '%');

+0

Aucune idée de comment j'ai raté cela sur le site php.net. –

Questions connexes