2010-04-22 9 views
0

Je dispose d'un fichier config, dans etc/ appelé 1.conflecture partie du contenu du fichier système avec PHP

Voici le contenu ..

[2-main] 
exten => s,1,Macro(speech,"hi {$VAR1} how is your day going?") 
exten => s,4,Macro(dial,2,555555555) 
exten => s,2,Macro(speech,"lkqejqe;j") 
exten => s,3,Macro(speech,"hi there") 
exten => s,5,Macro(speech,"this is a test ") 
exten => s,6,Macro(speech,"testing 2") 
exten => s,7,Macro(speech,"this is a test") 
exten => 7,1,Goto(2-tester2,s,1) 
exten => 1,1,Goto(2-aa,s,1) 
[2-tester] 
[2-aa] 
exten => 1,1,Goto(2-main,s,1) 



Comment puis-je lire la contenu entre la parole par exemple ..

exten => s,6,Macro(speech,"testing 2") 

Juste obtenir "testing 2" de cela.

Merci d'avance!

+0

Il y a beaucoup de 'speech' qui' speech'? Tout ? – codaddict

+0

Theres un nombre unique après s, de sorte que vous pouvez choisir un tel –

Répondre

2

Si je comprends bien, ce

$text = file_get_contents('/etc/1.conf'); 
preg_match_all('/speech,"(.*)"/', $text, $match); 

remplira le tableau $match avec tout le texte des lignes vocales. Plus précisément, $match[1] sera un tableau contenant uniquement la chaîne à l'intérieur des guillemets, de sorte que vous pouvez le faire pour la commodité et la lisibilité:

$speeches = $match[1]; 
echo $speeches[0]; // or 1 or 2 etc. 
+0

Nice merci! Que diriez-vous si c'est sous [2-aa] au lieu de [2-main]? Comment feriez-vous cela? –

+1

Cette expression rationnelle correspond à chaque ligne contenant 'speech' suivie d'une virgule et d'une chaîne entre guillemets, partout où elle apparaît dans le fichier. –

+0

Ahh je vois. Alors qu'est-ce que ça fait imprimer "discours", tester 2 "" pour moi. Comment est-ce que j'imprimerais juste ce qui est entre le "" qui teste 2? –