Bonjour,

J'ai un problème avec une regex et l'utilisation de l'ancre de début de ligne : ^

Voici la chaine ($str) que je veux analyser :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
function truc($machin = 'truc', $bidule = false)
{
        echo 'truc'; /* function (ne doit pas être remplacé car pas en début de ligne) */
}
 
class truc{
        function __construct()
        {
                echo 'truc';
        }
}
Quand j'utilise cette regex, ça fonctionne, le mot function est bien remplacé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<?php $str = preg_replace('#function#i', "--replaced--", $str); ?>
Mais quand j'ajoute l'ancre de début : ^ :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<?php $str = preg_replace('#^function#i', "--replaced--", $str); ?>
Et bien ça ne fonctionne plus, rien n'est matché, donc rien n'est remplacé.

Je crois que c'est parce qu'il interprète le ^ comme "le début de la chaine", or moi je voudrais que ^ désigne le début de chaque ligne.

Il doit surement y avoir un flag spécial pour ça... pourriez vous me l'indiquer ?

Merci