La fonction preg_replace () de PHP ne remplace pas toutes les lignes

2

La fonction preg_replace () de PHP ne remplace pas toutes les lignes dans:

12*some input
12*some input
1*some input

Le code est:

preg_replace("/^(\d{1,2}[^0-9])/", "", $text);

Le résultat est:

some input
12*some input
1*some input

Mais je veux ceci:

some input
some input
some input
A. Sang
la source
Comme il s’agit d’une question de programmation, il serait plus approprié de l’afficher sur stackoverflow, car le codage est considéré comme hors sujet par les super-utilisateurs.
Seth
tu sais, mais le problème est qui ne sait pas demander Question claire ou orthographe erreur ou pas de connaissances en anglais ou entrée gens tout stackoverflow 1 ou 2 Qus après ne peut pas demander!
A. a chanté

Réponses:

1

En fonction de la manière dont l’implémentation de PHP fonctionne, je pense que vous manquez une option ou que votre regex ne fait pas ce que vous pensez.

/^(\d{1,2}[^0-9])/

La regex ci-dessus rechercherait un ou deux chiffres suivis de chiffres à partir du début de la chaîne. Selon la façon dont cela fonctionne, un saut de ligne n'indique pas que cela ^devrait correspondre à nouveau.

Si vous examinez les modificateurs de modèle PCRE dans le manuel, vous devrez probablement fournir le mdrapeau pour activer le mode multiligne.

De plus, bien qu'il manque à cette page de manuel, vous aurez peut-être besoin de l'indicateur global. Donc la regex ci-dessus deviendrait:

/^(\d{1,2}[^0-9])/gm

Vous pourrez peut-être également tester cette expression régulière sur des plates-formes telles que RegEx 101 .

Seth
la source
De OP A. Sang : oui finalement fonctionne:/^(\d{1,2}[^0-9])/m
Fix1234
2
Je ne pense pas (pas à 100% sûr) que le /gmodificateur soit valide en PHP (contrairement à Perl).
Peter Mortensen le