Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    88

    sottostringa da prelevare

    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?

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    prova con /x[0-9]{6}y/i
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    Codice PHP:
    <?php
    $txt 
    'ciao questo è un testo e il suo formato da prendere è x123456y e non deve essere preso altro';
    $regex "/x[0-9]{6}y/i";
    preg_match_all($regex$txt$risultato);
    foreach (
    $risultato[0] as $value) {
        echo 
    $value;
    }
    ?>
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    88
    grazie a tutte due.
    Vorrei capire una cosa, su internet ho cercato diverse guide per "giocarci" con le espressioni regolari ma non riesco proprio a comprenderne il funzionamento, molti script che scrivo con le esp.regolare riesco a farli funzionare casualmente. Quindi vi chiedo qual è l'approccio da seguire?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.