2010-03-27 13 views
0

Je n'utilise généralement pas d'expressions régulières, d'où ma question. J'ai besoin d'une regex pour faire correspondre les éléments suivants:Assistance avec PHP Regex

'{any-string}'. 

Toute aide appréciée.

+2

Il pourrait être une bonne idée de lire un tutoriel sur les expressions régulières de sorte que vous comprenez réellement eux et ne pas simplement copier et coller la réponse la mieux notée dans votre code. Un peu de connaissance est une chose très dangereuse. L'analyse des chaînes peut être très difficile avec beaucoup de cas de bord à surveiller. –

+0

Les citations doivent-elles faire partie du match ou les avez-vous simplement ajoutées pour "clarté"? –

+0

match {any-string}, puis ...? – user187291

Répondre

1

L'expression la plus simple serait:

/{(.*?)}/ 

Si vous prévoyez des chaînes plus complexes (par exemple, une sorte de séquence d'échappement où les personnages { et } sont autorisés dans la chaîne), il pourrait être plus complexe . Par exemple, avec un \ (barre oblique inverse) séquence d'échappement:

/{((?:\\.|[^}])*)}/ 

Edit: Ce n'est pas testé, mais l'idée générale est que l'expression avalera tout caractère après l'évasion plutôt que d'assurer ce n'est pas l'accolade de fermeture .

0

Pour remplacer quoi que ce soit dans { } avec ce que file_get_contents retours que vous pouvez faire:

$page = file_get_contents('some_file_name or some_url'); 
$str = '.....{...}....'; 
$str = preg_replace('/{[^}]*}/',"$page",$str);