strpos avec une expression régulière

Vous le savez certainement, strpos ne supporte pas les expressions régulières. Pourtant il y a des situations où il peut être utile de trouver une position dans une chaîne en profitant de la souplesse offerte par les expressions régulières. PHP ne propose pas de fonction preg_pos, mais il y a une option de preg_match qui nous permets d'avoir un équivalent de strpos : PREG_OFFSET_CAPTURE. Quand ce drapeau est positionné, preg_match renvoie en plus des chaînes qui correspondent au motif la position où elles ont été trouvées :

<?php
$str 
"The quick brown fox jumps over the lazy dog";
if (
preg_match('/(fox|dog)/'$str$matchesPREG_OFFSET_CAPTURE)) {
    
// Affiche First animal at 16 
    
echo 'First animal at '.$matches[1][1];
}
?>

Etiquettes:

Add new comment