2016-03-03 8 views
1
$subject = "SIverygood \n SIverygood\n"; 
$pattern = '/^SI/m'; 

preg_match_all($pattern, $subject, $matches2,PREG_OFFSET_CAPTURE); 
var_dump($matches2); 

Je suis incapable de comprendre m et de modificateur. Je veux avoir SI au début de chaque nouvelle ligne. Je le fais dans un but pratique pour comprendre le modificateur m et s. L'exemple ci-dessus revient juste en premier SI. Mais je veux les deux.m modificateurs de motif regex

Répondre

2

Le m est un modificateur multi-ligne qui fait que l'ancre de début correspond au début de chaque ligne au lieu de l'ensemble de votre chaîne. Et dans votre chaîne au début de la première ligne vous avez SI et il le renvoie mais en deuxième ligne le début de la ligne est un espace pas SI.

Si vous voulez ignorer les espaces blancs au premier plan de votre ligne, vous pouvez utiliser suivant regex:

$pattern = '/^\s*(SI)/m'; 

et obtenir le résultat du premier groupe apparié. En savoir plus sur les modificateurs http://www.regular-expressions.info/modifiers.html

+0

Et s'il vous plaît expliquer à quoi sert l'utilisation du modificateur s – Curious

+0

@Curious Consultez le lien ci-joint. – Kasramvd

+0

Merci, je l'ai eu – Curious