8813 sujets

Développement web côté serveur, CMS

Bonjour à tous
Voici mon code php

$content = file_get_contents($fullFilePath);
if(preg_match('#^.*toto.*$#', $content))...

Je constate que si $content contient des \n le test renvoie false systématiquement.
Par contre si j'écris

$content = file_get_contents($fullFilePath);
$content = preg_replace('#\s+#', ' ', $content);
if(preg_match('#^.*toto.*$#', $content))...

le résultat est conforme à mon attente.
Tout se passe comme si \n était considéré comme une fin de chaîne, ce que je croyais pas être le cas en php.
Pourriez-vous éclairer ma lanterne ?
Merci de votre aide
Mon fichier contient le code d’un programme php. Une instruction peut se trouver sur plusieurs lignes ou une ligne peut contenir plusieurs instructions (bien que je ne fasse jamais ça).
file() renvoie un array avec une ligne par item. Cela ne correspond pas à mes besoins.
Mais ce n’est pas l’objet de ma question qui est
A ma connaissance preg_match peut scanner une chaîne de caractères contenant des \n. Je constate que tout se passe comme si la chaîne de caractères qui est prise en compte s’arrêtait au premier \n. Il devrait donc y avoir un moyen de dire que \n est un caractère comme un autre.