2011-03-22 2 views
1

le Patern est comme siphp preg_replace blocs de commentaire

/* comment [comment goes here] */ 
/* comment please do not delete the lines below */ 
[I am a special line so I should not be changed ] 
/* comment please do not delete the line above */ 

Je voudrais enlever les blocs de commentaires, mais au lieu de chercher /**/ Je voudrais que le commentaire soit /* comment [] */[] est le commentaire réel.

Ceci afin d'éviter tout texte qui doit inclure des commentaires.

Voici donc les conditions du commentaire

  1. commence par = >>/* comment
  2. suivi par = >> quoi que ce soit
  3. suivi par = >>*/
+0

Jusqu'où avez-vous essayé? – codaddict

+0

J'ai essayé quelques choses, ma connaissance d'expression régulière est = regarder un singe essayant de comprendre ce que son reflet est – Val

Répondre

3

Cela supprime les blocs de commentaire:

preg_replace('%/\*\s+comment\s+.*?\*/%s', '', $string) 

et débarrasser des espaces obsolètes de cette obtenir aussi bien:

preg_replace('%/\s*\*\s+comment\s+.*?\*/\s*%s', '', $string) 

Voici un script de test:

#!/usr/bin/php 
<?php 

$string = <<<EOS 
/* comment [comment goes here] */ 
/* comment please do not delete the lines below */ 
[I am a special line so I should not be changed ] 
/* comment please do not delete the line above */ 
EOS; 

print $string; 
print "\n---\n"; 
print preg_replace('%/\*\s+comment\s+.*?\*/%s', '', $string); 
print "\n---\n"; 
print preg_replace('%/\s*\*\s+comment\s+.*?\*/\s*%s', '', $string); 

?> 

sortie avec PHP 5.3.4:

/* comment [comment goes here] */ 
/* comment please do not delete the lines below */ 
[I am a special line so I should not be changed ] 
/* comment please do not delete the line above */ 
--- 


[I am a special line so I should not be changed ] 

--- 
[I am a special line so I should not be changed ] 
+0

ne semble pas fonctionner – Val

+0

[édité] Aucun des deux ne fonctionne – Val

+0

@val: Quelle version de PHP utilisez-vous? Les deux extraits fonctionnent comme PHP 5.3.4. (J'ai modifié la réponse et ajouté un script de test complet avec la sortie.) – svoop

0

Semble pour faire le travail :)

preg_replace("(\\/\\*[\s]*?comment[\\d\\D]*?[\s]*?\\*\\/)",'',$str)

Comment j'ai découvert?

bien ce site est tout simplement incroyable tooooo :)

http://txt2re.com/index.php3

+0

Cependant, vous pouvez dire que c'est une expression générée. '[\ s] *?': Les crochets sont obsolètes et le point d'interrogation (gourmandise) ainsi qu'un caractère suivent. '[\\ d \\ D] *': Cela signifie "n'importe quel chiffre ou non numérique", donc c'est équivalent à '. *'. Cela peut fonctionner, mais c'est difficile à lire. – svoop