Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    139

    Cercare Caratteri dentro stringa

    Ho un'array di questo tipo e una variabile che contiene dei caratteri:


    codice:
    $variabile = "oms";
    
    $nomi = array (
    "tommaso" => "m",
    "nicla" => "f",
    "silvestro" => "m",
    "gina" => "f",
    "nemo" => "m",
    "carol" => "f",
    "elenoire" => "f"
    );

    Devo stampare a video i nomi che contengono quei 3 caratteri, ho provato con la funzione

    strstr() ma non va mica...

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    I tre caratteri in qualsiasi ordine? Nell'ordine indicato? I tre caratteri in quell'ordine ed esattamente e in sequenza?

    Secondo me preg_match potrebbe aiutare

    Ad esempio
    Codice PHP:
    if ( preg_match'/.*o.*m.*s.*/' $stringa ) {
      echo 
    "ok";
    } else {
      echo 
    "non ok";

    Restituisce ok quando le tre lettere "o", "m" e "s" appaiono in quell'ordine ma in qualsiasi punto della stringa, anche separate tra loro

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    139
    I tre caratteri in qualsiasi posizione nella stringa esempio:

    mor

    se ci fosse il nome marco andrebbe stampato a video.


    ho provato il tuo codice mi da questo errore:

    Parse error: syntax error, unexpected '

  4. #4
    Utente di HTML.it L'avatar di Enjix
    Registrato dal
    Apr 2012
    Messaggi
    57
    Per il tuo specifico problema, potresti anche usare questo codice:

    codice:
    <?php
    $variabile = "oms";
    $nomi = array (
    "tommaso" => "m",
    "nicla" => "f",
    "silvestro" => "m",
    "gina" => "f",
    "nemo" => "m",
    "carol" => "f",
    "elenoire" => "f"
    );
    
    foreach ($nomi as $key=>$value)
    {
    preg_match_all("@(o|m|s)@", $key, $mtc);
    $mtc = $mtc[0];
    if (count($mtc) > 0) echo "trovato ".$key."";
    }
    ?>

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    139
    in questo modo vengono fuori anche nomi che non contengono tutte e tre i caratteri ad esempio viene stampato a video :

    swami
    lukas che ad esempio non ha nessuno di questi caratteri

  6. #6
    Utente di HTML.it L'avatar di Enjix
    Registrato dal
    Apr 2012
    Messaggi
    57
    Originariamente inviato da sharpin
    in questo modo vengono fuori anche nomi che non contengono tutte e tre i caratteri ad esempio viene stampato a video :

    swami
    lukas che ad esempio non ha nessuno di questi caratteri
    Ops scusa, ho interpretato male la tua richiesta. In effetti, il mio codice verifica che ci sia almeno uno di questi caratteri, non che ci siano tutti e tre. Puoi modificare allora il codice con l'espressione regolare usata da Leilond, cioè così

    codice:
    <?php
    $variabile = "oms";
    $nomi = array (
    "tommaso" => "m",
    "nicla" => "f",
    "silvestro" => "m",
    "gina" => "f",
    "nemo" => "m",
    "carol" => "f",
    "elenoire" => "f",
    );
    foreach ($nomi as $key=>$value)
    {
    preg_match("/.*o.*m.*s.*/", $key, $mtc);
    if (count($mtc) > 0) echo "trovato ".$key."";
    }
    
    ?>
    Scusami ancora.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    139
    Ottimo.


    Ma al posto dei singoli caratteri posso inserire tre variabili?

  8. #8
    Utente di HTML.it L'avatar di Enjix
    Registrato dal
    Apr 2012
    Messaggi
    57
    Tre variabili formati da una sola lettera o da più lettere?

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    139
    Ok funziona con le variabili, dicevo una cosa di questo genere, ognuna ha dentro una sola lettera.

    codice:
    foreach ($nomi as $key=>$value)
    {
    preg_match("/.*$uno.*$due.*$tre.*/", $key, $mtc);
    if (count($mtc) > 0) echo $key ."
    ";
    }

    Grazie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.