preg_replace

  • camperjohn
  • Guru
  • Guru
  • Avatar de l’utilisateur
  • Inscription: Nov 28, 2004
  • Messages: 1127
  • Loc: San Diego
  • Status: Offline

Message Mars 3rd, 2010, 3:08 pm

Je déteste les expressions régulières....

Comment puis-je faire cela: supprimer une ligne de code, à partir d'un fichier de configuration, avec une allumette


config.php
Code: [ Select ]
<?php
  $bd_server['test'] = "blahblah0";
  $bd_server['test2'] = "blahblah1"; <- this line is to be removed
//  $bd_server['test2'] = "blahblah2"; <- this line should stay because of comment
[space][space][space](etc)//  $bd_server['test2'] = "blahblah3"; <- this line should also stay, but is removed because comment is indented and not at {0}
?>
  1. <?php
  2.   $bd_server['test'] = "blahblah0";
  3.   $bd_server['test2'] = "blahblah1"; <- this line is to be removed
  4. //  $bd_server['test2'] = "blahblah2"; <- this line should stay because of comment
  5. [space][space][space](etc)//  $bd_server['test2'] = "blahblah3"; <- this line should also stay, but is removed because comment is indented and not at {0}
  6. ?>


test.php
Code: [ Select ]
$file = file_get_contents("config.php");

echo htmlentities(preg_replace('!^[^/].*bd_server\[\'test2\'\].*$!mi','',$file));
  1. $file = file_get_contents("config.php");
  2. echo htmlentities(preg_replace('!^[^/].*bd_server\[\'test2\'\].*$!mi','',$file));


résultat désiré:
Code: [ Select ]
<?php
  $bd_server['test'] = "blahblah0";
//  $bd_server['test2'] = "blahblah2"; <- this line should stay because of comment
[space][space][space](etc)//  $bd_server['test2'] = "blahblah3"; <- this line should also stay, but is removed because comment is indented and not at {0}
?>
  1. <?php
  2.   $bd_server['test'] = "blahblah0";
  3. //  $bd_server['test2'] = "blahblah2"; <- this line should stay because of comment
  4. [space][space][space](etc)//  $bd_server['test2'] = "blahblah3"; <- this line should also stay, but is removed because comment is indented and not at {0}
  5. ?>


Résultat réel:
Code: [ Select ]
<?php
  $bd_server['test'] = "blahblah0";
//  $bd_server['test2'] = "blahblah2"; <- this line should stay because of comment
?>
  1. <?php
  2.   $bd_server['test'] = "blahblah0";
  3. //  $bd_server['test2'] = "blahblah2"; <- this line should stay because of comment
  4. ?>


Si je lance test.php, il config.php charges et tente de supprimer la ligne, blahblah 1 est alors retiré OK, MAIS AUSSI blahblah 3. Je veux 3 à rester parce que du commentaire. blahblah 2 séjours avec succès.

Des idées?
Upload video and picture galleries at http://www.bodydot.com?post+upload+video+picture+gallery
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mars 3rd, 2010, 3:08 pm

  • camperjohn
  • Guru
  • Guru
  • Avatar de l’utilisateur
  • Inscription: Nov 28, 2004
  • Messages: 1127
  • Loc: San Diego
  • Status: Offline

Message Mars 3rd, 2010, 3:13 pm

En d'autres termes, comment puis-je tester pour "remplacer le présent, mais pas s'il ya un doubleslash avant le match, même s'il ya des tabulations et des espaces"
Upload video and picture galleries at http://www.bodydot.com?post+upload+video+picture+gallery
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Mars 3rd, 2010, 9:39 pm

Youre en s'assurant que le premier caractère n'est pas un slash, mais alors vous utilisez «quelque chose zéro fois ou plus» après ce qui permet une barre oblique à venir po

Quelles sont les chances de vos fichiers de configuration ont #commentaires de style?
Juste pour vérifier serait manquer ces barres obliques.

Code: [ Select ]
# $commented = '';


How about this

Code: [ Select ]
!^\s*$bd_server\[\'test2\'\].*$!mi


Il permet de blancs au début de la ligne, puis ne reconnaît que la variable.
Strong with this one, the sudo is.
  • camperjohn
  • Guru
  • Guru
  • Avatar de l’utilisateur
  • Inscription: Nov 28, 2004
  • Messages: 1127
  • Loc: San Diego
  • Status: Offline

Message Mars 3rd, 2010, 11:58 pm

Eh bien PHP ne supporte pas #comme commentor. Je cherche en fait dans un fichier PHP et remplacement.

Je n'ai pas besoin de vérifier pour / / n'importe où avant le motif. Je ne vais pas vérifier / * * / combos
Upload video and picture galleries at http://www.bodydot.com?post+upload+video+picture+gallery
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Mars 4th, 2010, 9:00 am

Quote:
Eh bien PHP ne supporte pas #comme commentor.


Depuis quand?
Strong with this one, the sudo is.
  • camperjohn
  • Guru
  • Guru
  • Avatar de l’utilisateur
  • Inscription: Nov 28, 2004
  • Messages: 1127
  • Loc: San Diego
  • Status: Offline

Message Mars 4th, 2010, 10:50 am

Depuis camperjohn ne s'en sert jamais.
Upload video and picture galleries at http://www.bodydot.com?post+upload+video+picture+gallery
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Mars 4th, 2010, 1:11 pm

Êtes-vous prêts et le fonctionnement de cette instant, toutefois, ne les " fois des espaces zéro ou plus, suivis par une variable "Le régime de travail pour vous?
Strong with this one, the sudo is.
  • camperjohn
  • Guru
  • Guru
  • Avatar de l’utilisateur
  • Inscription: Nov 28, 2004
  • Messages: 1127
  • Loc: San Diego
  • Status: Offline

Message Mars 4th, 2010, 5:13 pm

joebert a écrit:
Êtes-vous prêts et le fonctionnement de cette instant, toutefois, ne les " fois des espaces zéro ou plus, suivis par une variable "Le régime de travail pour vous?


Oui je vous remercie bonne idée. Qui fonctionne.

Cela signifie simplement mes patrons correctement éviter:

/ / Pattern
#modèle
(spacespacespace) / / pattern

Et seront correctement prises

(spacespacespace) Pattern

Mais permettra également d'éviter (même si elle n'est pas un commentaire)

foobar pattern

Signifie simplement que quelque chose avant le motif est considéré comme une non-concordance. Cela fonctionne bien pour ce que j'ai besoin.
Upload video and picture galleries at http://www.bodydot.com?post+upload+video+picture+gallery
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Mars 4th, 2010, 8:43 pm

J'ai pensé qu'il aurait envisagé votre mentionné son d'un fichier de configuration. Ma conjecture est que toute solution autre que l'espace trouvée avant une déclaration de variable dans un fichier config qui va probablement être une erreur de syntaxe dans presque tous les anyways situation.
Strong with this one, the sudo is.

Afficher de l'information

  • Total des messages de ce sujet: 9 messages
  • Utilisateurs parcourant ce forum: ScottG et 242 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC