Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    121

    dividere stringa in parole

    Ciao,
    ho bisogno di dividere una stringa in parole, ad esempio ho la stringa:
    Ciao, questa é una stringa
    tutte le parole che vengono tratte da questa stringa vanno confrontate con un altro testo, per vedere se trovo dei riscontri, c'é un modo per dividere queste parole magari formando un array?

    Questo é quello che vorrei fare: (se c'é un modo più semplice di farlo vi prego di indicarmelo)
    Codice PHP:
    //array da cnfrontare con ilt esto
    $parola = array('Ciao,','questa','é','una','stringa');
    //testo
    $confronto "Ciao, questa é una stringa";
    //conto i valori dell array
    $contarray count($parola);
        
    //confronto i valori con il testo
        
    for ($i 0$i <= $contarray$i++) {
            if (
    preg_match("/".$parola[$i]."/i"$confronto)) 
                
    $corrisp[$i] = $parola[$i];
        }
    //conto le corrispondenze
    $contcorrisp count($corrisp);
    //tolgo 1 dal conteggio,  se nn c'é niente nell'array mi da 1 nn so perché!
    $contcorrisp $contcorrisp-1;
    echo 
    "Corrispondenze trovate: ".$contcorrisp."
    "
    ;

    //mi sapreste indicare come stampare tutti i valori trovati?
    echo $corrisp[0]; 
    PS: ci sono delle cosette nei commenti al codice che devo chiarire, tipo se l'array é vuoto mi marca sempre 1 al conteggio di: $contcorrisp = count($corrisp);

    Ciaooo e grazie...

  2. #2
    Ti suggerisco di iniziare leggendo il manuale ufficiale:

    http://www.php.net/explode
    http://www.php.net/preg_split
    http://www.php.net/implode
    http://www.php.net/print_r , http://www.php.net/var_dump , http://www.php.net/var_export

    A seconda del tipo di confronto, puo esserti utile anche http://www.php.net/in_array

    Per quanto riguarda il count, a me funziona come da manuale:

    Codice PHP:
    <?php 
    $array 
    = array();
    var_dump(count($array)); // int(0) 
    ?>

  3. #3
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Ma scusa nn fai prima a fare

    $str ="Stringa in cui contare le parole";
    $xpl = explode(" " , $str);
    echo "La stringa ha ".count($xpl)." parole";

    ho visto ora il post di filippo.
    In effetti ci sono moltissimi altri modi per fare in 2 righe tutto.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    121
    ok, ci sono piu o meno riuscito, vi spiego in dettaglio, devo analizzare una pagina html e cercare dentro di essa delle parole, allora io spezzetto in vari modi la pag html e mi esce alal fine qualcosa del genere:
    html
    head
    title /title
    /head
    body
    h1 /h1
    testo ... br /
    &euro;19.95
    /body
    /html
    poi cerco dentro essa:
    Codice PHP:
    $page2 str_replace(array($pn,"&lt;","&gt;"), array(""," "," "), $page);
    $parola explode(" "$pn);
    if (
    in_array($page2$parola)) {
        echo 
    "Trovato";

    $pn ammettiamo che sia "Ciao, questo é un testo"
    dovrebbe trovarmi una corrispondenza e dirmi "trovato" ma invece non l fa...

    sapete aiutarmi??? ciaooo

  5. #5
    Perchè non usi direttamente un'espressione regolare?

    Inoltre, non è che ti converrebbe applicare http://www.php.net/strip_tags al contenuto prima di iniziare l'elaborazione?

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    121
    no, non penso, perché prima faccio delle ricerche all'interno del file che hanno bisogno appunto dei tag per essere trovati (preg_match), vabbé comunque l'output é comunque pulito erche tutto separato da " ", il fatto é che non lo trova e nn ne capisco il motivo...

    per un espressione regolare intendi:
    Codice PHP:
    preg_match("/".$parola."/i"$page2); 
    non so se funziona, e comunque mi dovrebbe dar tutti i riusltati, non solo 1, almeno con preg_match a me ha sempre salvato solo il primo riscontro..

    grazie, ciao...

  7. #7

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    121
    sono riuscito a fare questo:
    Codice PHP:
    if (preg_match_all("/&lt;h1&gt;(.*?)&lt;\/h1&gt;/i"$page$pn)) {

    if (
    preg_match("/".$pn[1][0]."&lt;\/h1&gt;(.*?)".$pn[1][0]."/i"$page$h))
    echo 
    "trovato";
        

    che in poche parole cerca qualcosa nei tag h1 e se c'é qualcosa di uguale dopo a quello che c'era nel tag h1 mi stampa "trovato"...

    fin qui sembra funzionare, adesso come vedrete però nel primo controllo ho messo preg_match_all, per verificare se ci sono più h1, adesso quello che dovrei fare é verificare il secondo preg_match con tutti i dati del primo preg_match_all, se ci sono piu dati nell'array che ho ricavato nel preg_match_all..

    La seconda cosa che dovrei fare é dividere $pn[1][0] in array con explode e verificare se ci sono ugualianze tra i dati degli array che ho ricavato e il testo dopo $pn[1][0]/h1

    come potrei fare a fare tutte queste cose? ci sto pensando da un bel po... ma mi sembra che mi stia solo fondendo il cervello... scusate se mi sto esprimendo male, ma é difficile anche da esprimerla la cosa che devo fare...

    ciaoo..

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.