Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    Verificare parole di un array da una frase

    Ragazzi, in un array denominato $citta[] ho messo tutti i nomi delle grandi città italiane.

    Nella mia pagina ho una variabile $titolo dinamica che potrebbe (o non) contenere il nome di una città, tipo:

    $title="Sono stati trovati dei resti archeologici a Roma e a Napoli";

    Vorrei fare uno script che mi restituisca in na variabile $trovato il nome della prima citta che si trova d'avanti, facendo il matching con il mio array.

    In questo caso: $trovato="Roma";

    Come posso fare?
    Qualcuno mi da una dritta?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    $citta = array('Roma','Milano','Napoli','Torino');
    $title="Sono stati trovati dei resti archeologici a Roma e a Napoli";
    preg_match_all('#\w+#',$title,$mth);
    
    echo '<pre>';
    print_r($mth[0]);
    
    $result = array_intersect($citta, $mth[0]);
    print_r($result);
    Dal risultato dell'intersezione, nel caso non sia vuoto, estrai il primo elemento.

  3. #3
    Provo subito.

    Grazie mille.

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Magari creati il tuo array di città inserendole tutte in minuscolo e usa la funzione array_map() per convertire tutte le parole estratte ugualmente in minuscolo.

  5. #5
    Ci sto lavorando, ma volevo sapere per curiosità:
    '#\w+#'
    a che serve?

  6. #6
    Questa cosa di Array_map non l'ho proprio capita.

    Come sarebbe il codice?

  7. #7
    Non funziona. Ma forse proprio perchè non ho capito come fa a fare lo splitting. Il comando che mi hai fato, non usa il carattere [spazio] per capire quando termina una parola?

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da WillyLord
    Ci sto lavorando, ma volevo sapere per curiosità:
    '#\w+#'
    a che serve?

    http://it.php.net/manual/en/regexp.reference.php

    Serve per identificare le singole parole che andranno a formare il tuo array da confrontare con quello delle città.

    La funzione array_map() è spiegata qui
    http://it.php.net/manual/en/function.array-map.php

    codice:
    <?php
    $citta = array('roma','milano','napoli','torino');
    $title = "Sono stati trovati dei resti archeologici a Roma e a Napoli";
    
    // funzione per convertire in minuscolo l'elemento dell'array che viene passato
    function minuscolo($val) {
      return strtolower($val);
    }
    
    preg_match_all('#\w+#',$title,$mth);
    
    
    // rendo minuscole tutte le stringhe recuperate tramite l'espressione regolare
    $parole = array_map('minuscolo',$mth[0]);
    
    // recupero gli elementi comuni
    $result = array_intersect($citta, $parole);
    
    //echo '<pre>';
    //print_r($result);
    
    // verifico quanti elementi ha restituito l'intersezione
    // se ce ne sono recupero il primo elemento "capitalizzato"
    echo count($result) > 0 ? ucfirst($result[0]) : 'nessuna corrispondenza';
    ?>

  9. #9
    Proprio non capisco perchè non funziona.

    echo count($result) > 0 ? ucfirst($result[0]) : 'nessuna corrispondenza';
    non restituisce niente. nemmeno l'errore.

    facendo:
    echo $citta[0]; echo $parole[0]; echo $result[0];

    vedo che:
    $citta[0] restituisce 'agrigento' (la mia prima città dell'array)
    $parole[0] restituisce 'genova' (che è la prima parola del titolo)
    $result[0] non contiene niente

    eppure genova è contenuto nell'array e tutto appare scritto in piccolo

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Posta il print_r() sia di $citta che di $parole.

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.