da una stringa devo prelevare una sottostringa di questo seguente formato "x 6 numeri consecutivi y finale" cioè x123654y" (x e y può essere sia maiuscolo che minuscolo).
x123y4y non deve essere preso perché in mezzo a x e y ci sono solo 3 numeri
codice:
$txt = 'ciao questo è un testo e il suo formato da prendere è x123456y e non deve essere preso altro';
substr_xy($txt);
$txt = 'ciao questo è un testo e questo formato è x123456 e non deve essere preso';
substr_xy($txt);
$txt = 'ciao questo è un testo e il suo formato da prendere è x123456y e non deve essere preso altro X12y456y';
substr_xy($txt);
codice:
function substr_xy($txt)
{
$pos_x = stripos($txt, 'x');
$sottostringa = substr($txt, $pos_x);
$pos_x = stripos($sottostringa, 'x');
$pos_y = stripos($sottostringa, 'y');
if ($pos_x==false && $pos_y==false)
return false;
$sottostringa = substr($sottostringa, $pos_x, $pos_y + 1);
$solo_numeri = substr($sottostringa,1,-1);
if (is_numeric($solo_numeri) && strlen($solo_numeri)==6)
{
return $sottostringa;
}
return false;
}
lo script funziona, ma vorrei sapere ci sono altri casi particolari che deve tenere conto?
una soluzione più "snella" con le espressione regolare?