Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1316 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Regex PHP (new line)

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Regex PHP (new line)

n°2314313
MaybeEijOr​Not
but someone at least
Posté le 22-04-2018 à 01:42:48  profilanswer
 

Bonjour,

 

Je cherche à match une nouvelle ligne suivie d'un texte. Mais absolument aucun moyen de match la nouvelle ligne. Je ne pourrai évidemment pas vous énumérer tout ce que j'ai pu tenter mais voilà le contexte :

 

Je fais tourner PHP 7.1.9 sur un serveur Apache 2.4.27, le tout dans Wamp 3.1.0 (64 bits) sur mon Windows 10.
C'est un fichier php (UTF-8, testé en format Windows et en format Unix) qui crée un autre fichier php (par conséquent UTF-8, testé en format Windows et en format Unix), je vous passe les détails mais en gros les variables suivantes sont ajoutées au fichier.php avec fwrite :

Code :
  1. fwrite($handle, "<?php\n #Config.php#\n\n //installation param\ndefine(\"install\", \"1\" );\n\n //errors param\ndefine(\"max_error_lvl_show\", 1);\n?>" ); //lors de la création du fichier
  2. fwrite($handle, "\n //".$comment."\n".$contents); //le $handle insère au bon endroit le texte
  3. fwrite($handle, "define(\"".$name."\", \"".$value."\" );\n".$contents); //le $handle insère au bon endroit le texte
  4. ...etc.
 

Je récupère donc quelque chose comme :

Code :
  1. <?php
  2. #Config.php#
  3.  
  4. //installation param
  5. define("install", "3" );
  6.  
  7. //errors param
  8. define("max_error_lvl_show", 1);
  9.  
  10. //language params
  11. define("lang_default", "fr" );
  12.  
  13. //test
  14. define("test", "test" );
  15. ?>
 

Maintenant, pour insérer au bon endroit d'autres textes, je dois placer mon curseur juste avant :

Code :
  1. //language params
 

J'utilise donc une regex :

Code :
  1. $comment = "language params";
  2. $pattern = '/\n \/\/'.$comment.'/';
 

Mais ça ne match pas, le plus étonnant c'est que :

Code :
  1. $pattern = '/. \/\/'.$comment.'/s';
 

Ne fonctionne pas non plus, bon j'ai essayé des dizaines de combinaisons, mais rien ne fonctionne. Au passage, les essais précédents fonctionnent sur le site regex101. Si je n'essaye pas d'attraper le saut de ligne, je choppe bien mon texte, donc c'est vraiment le saut de ligne qui chie.
Donc si quelqu'un a une idée, merci.


Message édité par MaybeEijOrNot le 22-04-2018 à 01:48:44

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
mood
Publicité
Posté le 22-04-2018 à 01:42:48  profilanswer
 

n°2314319
MaybeEijOr​Not
but someone at least
Posté le 22-04-2018 à 10:35:40  profilanswer
 

Veuillez oublier ma débilité, la nuit porte conseil, le problème n'est pas dans le regex mais dans le fait que pour trouver la position je lis le fichier ligne par ligne :
 

Code :
  1. public function find_position($type, $name, $value = null) {
  2.      $handle = fopen($this->path, 'r');
  3.      if($handle) {
  4.         $this->position_copy = ftell($handle);
  5.         $this->position_paste = ftell($handle);
  6.         while(($line = fgets($handle, 4096)) !== false) {
  7.            if($this->file_parsing($line, $type, $name, $value)) {
  8.               $this->debug = ftell($handle)."\n";
  9.               $this->position_copy = ftell($handle);
  10.               break;
  11.            } else {
  12.               $this->position_paste = ftell($handle);
  13.            }
  14.         }
  15.         if(feof($handle)) {
  16.            fseek($handle, -2, SEEK_END);
  17.            $this->position_copy = ftell($handle);
  18.            $this->position_paste = ftell($handle);
  19.         }
  20.         fclose($handle);
  21.      } else {
  22.         throw new user_error(err_cannotreadfile.$this->path, 1);
  23.      }
  24.      return $this->debug;
  25.   }


 
 :(


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Regex PHP (new line)

 

Sujets relatifs
[PHP] Suppression d'accents, de TOUS les accentsRegex pour remplacement de &
Aide pour regexAide sur une regex
Gestionnaire de contenu moderne [PHP, SQL] Forum de discussionRegex : capturer toutes les itérations d'un groupe capturant +
[PHP] stocker valeur d'un iframe dans unfichier[Résolu PHP]aide pour passer de preg_replace à preg_replace_callback
récupérer collection d'objets en PHP depuis une D.B.Php.ini changement non pris en compte
Plus de sujets relatifs à : Regex PHP (new line)


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR