Buenas, aveces necesitamos hacer una captura global con expresiones regulares, ya que cuando encuentra el primer patron hay termina la expresion termina...
Aunque en Perl nunca tuve ese problema en PHP, así que muestro la manera de hacerlo con PHP y Perl.
Perl
En Perl necesito usar el operador de opción g mas una sentencia infinita, en este caso while...
#!/usr/bin/perl -w
$txt = "Hola adios Hola aqwq ds iifndini Hola";
while($txt =~ m/(Hola+)/g){
print $1, "\n";
}
exit;
Salida:
yoya@yoya-desktop:~/Escritorio$ perl d.pl
Hola
Hola
Hola
PHP
En PHP necesito usar la función preg_match_all.
<?php
$txt = "Hola adios Hola aqwq ds iifndini Hola";
preg_match_all("/(Hola+)/", $txt, $captura, PREG_SET_ORDER);
foreach ($captura as $salida){
echo $salida[1];
echo "\n";
}
?>
Salida:
yoya@yoya-desktop:~/Escritorio$ php a.php
Hola
Hola
Hola
Referencias:
Expresiones Regulares
9:37