2014-05-23 2 views
0

J'ai plusieurs centaines .markdown fichiers que je dois faire une boucle à travers et remplaçons les chaînes multilignes suivantes:PHP regex/rechercher et remplacer des chaînes multilignes dans plusieurs fichiers

--- 
--- 

J'ai actuellement le code suivant:

foreach (glob("*.markdown") as $filename) 
{ 
    $file = file_get_contents($filename); 
    file_put_contents($filename, preg_replace("/regexhere/","replacement",$file)); 
} 

Ma question est, quelle regex dois-je supprimer les chaînes multilignes dans chaque fichier.

Merci

+0

Deux appels à 'preg_replace() '? – Cyclonecode

+0

@KristerAndersson Désolé, je voulais dire l'expression rationnelle pour supprimer les chaînes '---' multilignes. Je dois faire correspondre et enlever seulement la multiline '---' parce qu'ailleurs ailleurs dans le fichier j'ai un simple '---' que je dois garder – user2028856

+0

Sidenote: Vous devrez peut-être supprimer le 'http: // localhost /' dans 'foreach (glob (" http: //localhost/*.markdown ")' –

Répondre

2

cela peut être fait plus rapidement avec str_replace(), comme ceci:

<?php 
echo "<pre>"; 

$file="my file 
is 
this 
--- 
--- 
goats"; 

echo str_replace("---\r\n---\r\n",'',$file); 

qui retourne:

my file 
is 
this 
goats 

Live Demo: http://codepad.viper-7.com/p1Bant

sauts de ligne peuvent être \n ou \r\n selon os \ software

+1

Plus une démo; prime. ;-) –

2

Si vous voulez vraiment le faire en utilisant l'expression régulière alors vous devriez essayer ::

echo "<pre>"; 

$file="my file 
is---dfdf 
this--- 
--- 
--- 
goats"; 

$res = preg_replace("/^---\r\n/m", "", $file); 
// m at the end of line will match multiple line so even if you have --- on more than 2 lines it will work 
echo $res; 

La sortie sera ::

my file 
is---dfdf 
this--- 
goats 
+0

@ user2028856 essayez ceci si vous voulez utiliser regex search – D555

Questions connexes