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

    Analizzare testo e sottilineare parole non presenti nel database

    Ciao a tutti, sto creando uno script che prende in input un testo, lo analizza per controllare se sono presenti parole che non compaiono nel 'vocabolario' memorizzato in un database, ed eventualmente le sottolinea. Questo e' il codice, ma restituisce solamente le parole sottolineate (quindi 'errate'), ma non il resto del testo. Come faccio a visualizzare tutto il testo?

    Codice PHP:
    function wrongwords($text)
    {
    $words str_word_count($text,1);
        
    $conn mysqli_connect('127.0.0.1','root','','esame') or die("Connection failed: " $conn->connect_error);
        foreach (
    $words as $word)
        {
        
    $query mysqli_query($conn,"SELECT * FROM vocabolario WHERE vocabolo like '%$word%'");
            if(
    mysqli_num_rows($query) == 0
            {
            echo 
    "<u>$word</u>";
            }
        }
        
    $conn->close();

    Il db e' composto da un solo campo chiamato vocabolo

  2. #2
    Codice PHP:
    if(mysqli_num_rows($query) == 0
            {
            echo 
    "<u>$word</u>";
            }else{
            echo 
    $word;
            } 
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Quote Originariamente inviata da Santino83_02 Visualizza il messaggio
    Codice PHP:
    if(mysqli_num_rows($query) == 0
            {
            echo 
    "<u>$word</u>";
            }else{
            echo 
    $word;
            } 
    Se ad esempio inserisco questo testo 'Testo di prova HTML' mi restituisce il seguente output

    testodiprovahtml

    come risolvo il problema degli spazi? Grazie

  4. #4
    rimetti lo spazio nella echo, tipo echo $word." ";
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Quote Originariamente inviata da Santino83_02 Visualizza il messaggio
    rimetti lo spazio nella echo, tipo echo $word." ";
    non va bene. Se ad esempio inserisco come testo 'I will try to do it, but not today.' (e' in Inglese, il mio vocabolario e' in Italiano), dovrebbe restituirmi questo testo 'I will try to do it, but not today.' invece mi restituisce i will try to do it but not today, tutto senza punteggiatura

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova cosi. Non testato.

    Codice PHP:
    function wrongwords($text)
    {
    $words str_word_count($text,1);
        
    $conn mysqli_connect('127.0.0.1','root','','esame') or die("Connection failed: " $conn->connect_error);
        foreach (
    $words as $word)
        {
        
    $query mysqli_query($conn,"SELECT * FROM vocabolario WHERE vocabolo like '%$word%'");
            if(
    mysqli_num_rows($query) == 0
            {
             
    $t"<u>$word</u>";
             
    $text preg_replace("/\b$word\b/"$t$text);
            }
        }
         echo 
    $text;
        
    $conn->close();

    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Prova cosi. Non testato.

    Codice PHP:
    function wrongwords($text)
    {
    $words str_word_count($text,1);
        
    $conn mysqli_connect('127.0.0.1','root','','esame') or die("Connection failed: " $conn->connect_error);
        foreach (
    $words as $word)
        {
        
    $query mysqli_query($conn,"SELECT * FROM vocabolario WHERE vocabolo like '%$word%'");
            if(
    mysqli_num_rows($query) == 0
            {
             
    $t"<u>$word</u>";
             
    $text preg_replace("/\b$word\b/"$t$text);
            }
        }
         echo 
    $text;
        
    $conn->close();

    Sembra funzionare, saresti cosi gentile da spiegarmi le modifiche?

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Se la parola non esiste la si rimpiazza nel testo originale con <u>parola</u>. Nella regexp \b indica il limite di una parola (cerca su internet per imaggiori informazioni).

    Un consiglio. Dovresti fare una versione OOP della tua funzione o aggiungere $conn come parametro alla tua funzione. Temo che la funzioni sprecchi tempo a connettere e disconnettere il db.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    stavo facendo delle prove, e ho notato che la funzione non mantieni la formattazione dei paragrafi. E' possibile modificarla in modo che i paragrafi vengona resituiti come nel testo originale?

  10. #10
    io direi di partire da una cosa simile

    Codice PHP:
     <?php

    $testo 
    "questo è un testo di prova di un testo che include la parola html. di html.it . per html testo prova";

    $words array_unique(preg_split('/[ \.]+/',$testo));

    function 
    findWordInDatabase($word)
    {
        
    $exists false;
        
    //cerco la parola nel db con mysql etc
        
        //fake code
        
    $exists in_array($word,array('testo','html'));

        return 
    $exists;
    }

    $newtesto $testo;

    foreach(
    $words as $word)
    {
        if(
    findWordInDatabase($word))
        {
            
    $newtesto preg_replace("/$word/"'<u>'.$word.'</u>'$newtesto);
        }
    }

    echo 
    "prima:\n";
    echo 
    $testo."\n";
    echo 
    "dopo:\n";
    echo 
    $newtesto;
    cmq fate vobis
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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.