Dizionario in PHP

di il
9 risposte

Dizionario in PHP

Salve ragazzi,

dopo aver finito (finalmente) tutti gli esami del semestre universitario mi sono dedicato al php.. Non mi ero mai interessato prima ma adesso ho scoperto che il php è molto ma molto simile al linguaggio C.. Visto che in C sono abbastanza bravo (anche se il prof mi ha messo 27 distruggendomi l'autostima) ho deciso di cominciare a scrivere in php..

Come primo script ho deciso di creare un grande dizionario.. Il tutto si basa su tre pagine, la prima dove l'utente inserisce la parola, la seconda dove viene visualizzata la parola con la definizione (questa pagina contiene anche le relative funzioni di ordinamento e ricerca binaria) ed infine una terza pagina che contiene tutte le parole e le definizioni del dizionario (questa pagina viene inclusa nella seconda, serve solo ad ordinare meglio in codice)

Lo script funziona solo che ho un problema.. Io per inserire nuove parole nel dizionario devo per forza andare nel codice sorgente ed aggiungere elementi e definizioni.. Si può fare ma lo vedo come un lavoro molto "noioso"..

Vorrei sapere se è possibile fare in modo di inserire le parole magari stesso dal sito e aggiornare automaticamente l'array delle parole e delle definizioni dall'esterno..

Se si può fare potete dirmi più o meno come fare teoricamente? (al codice ci penso io)

Grazie mille a tutti

9 Risposte

  • Re: Dizionario in PHP

    Santa universita
    Dati e informazioni vanno inserite nei database che l'applicazione interroga e può alimentare, no nei sorgenti della stessa
    Per database puoi usare un file di testo strutturato, un file XML, un db MySQL, ecc.

    Se hai bisogno di altre indicazioni chiedi pure
  • Re: Dizionario in PHP

    Sto leggendo che è possibile gestire tutto con un file testo.. ma come devono essere strutturati? cioè se io inserisco tutte le parole all'interno del file testo poi come effettuo la ricerca su quelle parole?

    c'è un modo per trasferire le parole in un array? poi a questo punto dovrei fare la stessa cosa con le definizioni..

    perchè in pratica io ho creato 2 array.. uno con tutte le parole e uno con tutte le definizioni.. parole e definizioni hanno gli indici corrispondenti e nella funzione di ordinamento nell'array delle parole effettuo le stesse operazioni anche nell'array delle definizioni in modo da farle corrispondere sempre..

    poi effettuo la ricerca binaria sulle parole e mi ricavo l'indice che poi uso per stamparmi la definizione..

    questo ragionamento può essere fatto importando un file testo?
  • Re: Dizionario in PHP

    Io ho strutturato cosi il codice... funziona *.*

    questa è la pagina dei vocaboli e delle definizioni (quella da sostituire in qualche modo xD)
    <?php 
    
    $vocaboli = array("Bit", "Hard disk", "Ram", "Linguaggio c");
    
    $definizioni = array(
    
    /*BIT*/ "Un bit è l'unità di misura dell'informazione, dall'inglese binary unit, definita come la quantità minima di informazione che serve a discernere tra due possibili alternative equiprobabili",
    
    /*HARD DISK*/ "Un disco rigido, anche chiamato disco fisso o hard disk drive, è un dispositivo di memoria di massa che utilizza uno o più dischi magnetici per l'archiviazione dei dati.Il disco rigido è uno dei tipi di dispositivi di memoria di massa attualmente più utilizzati. È infatti presente nella maggior parte dei computer e anche in altri dispositivi elettronici, come ad esempio il PVR.",
    
    /*RAM*/ "In informatica la memoria ad accesso casuale, acronimo RAM (del corrispondente termine inglese Random-Access Memory), è una tipologia di memoria informatica caratterizzata dal permettere l'accesso diretto a qualunque indirizzo di memoria con lo stesso tempo di accesso.",
    
    /*LINGUAGGIO C*/ "Fu ideato nei Bell Laboratories della AT&T nel 1972 da Dennis Ritchie come evoluzione del linguaggio B di Ken Thompson usato per la scrittura dei primi sistemi operativi UNIX. Lo stesso Thompson nel 1970 si era a sua volta ispirato al linguaggio BCPL di Martin Richards, anch'esso pensato per scrivere sistemi operativi e software di sistema. La definizione formale si ha nel 1978 a cura di B. W. Kernighan e D. M. Ritchie. Nel 1983 iniziò il lavoro di definizione di uno standard da parte dell'American National Standards Institute, che rilasciò nel 1990 lo Standard ANSI C (ISO C89). Il C è tecnicamente un linguaggio di programmazione ad alto livello. Tuttavia, poiché esso mantiene evidenti relazioni semantiche con il linguaggio macchina e l'assembly, risulta molto meno astratto di linguaggi anche affini (appartenenti allo stesso paradigma di programmazione), come per esempio il Pascal. Per questo motivo, talvolta viene anche identificato con la locuzione (più ambigua) linguaggio di medio livello, se non addirittura (in modo certamente improprio) come macro-assembly, o assembly portabile.");
    
    ?>
    Questa invece è la pagina per le ricerche e per la stampa:
    <?php         //inizio codice php 
    
    include("vocaboli.php");    //includo la pagina "vocabili.php"
    
    $n=count($vocaboli);       //calcolo il numero di parole presenti nel dizionario
    
    $stringa=ucfirst(strtolower($_POST['parola'])); //  strtolower($_POST['parola']);  //solo la prima lettera della stringa sarà maiuscola
    
    $vocaboli1=ordinamento_inserimento($vocaboli, $definizioni, $n);
    $definizioni1=ordinamento_inserimento1($vocaboli, $definizioni, $n);
    
    $indice=ricerca_binaria($vocaboli1, $stringa, $n);   //effettuo la ricerca binaria
    
    
    if($indice>=0)            //se l'indice trovato è >=0 allora stampo il risultato
    {
    	echo "<strong>$vocaboli1[$indice]:</strong> ";
    	echo "$definizioni1[$indice]<br>";
    }
    
    else 
    {
    	echo ("Mi dispiace ma la parola da te cercata non è presente nel nostro archivio. Segnalaci la parola così da poterla inserire al più presto.");          //se la parola non c'è scrivo il relativo msg
    }
    
    ?>                      </div>
    
    
                                                                                           
    <?php
    
    //INIZIO FUNZIONE RICERCA BINARIA
    function ricerca_binaria($vocaboli, $chiave, $len)
    {
    	$primo=0;
    	$ultimo=$len;
    
    	while($primo<=$ultimo)
    	{
       		$mediano=($primo+$ultimo)/2;
    
       		if($chiave==$vocaboli[$mediano])
    			return $mediano;
       		else if($chiave<$vocaboli[$mediano])
    			$ultimo=$mediano-1;
       		else 
    			$primo=$mediano+1;
    	}
    	return -1;
    }
    //FINE FUNZIONE RICERCA BINARIA
    
    //INIZIO FUNZIONE ORDINAMENTO PER INSERIMENTO
    function ordinamento_inserimento($vocaboli, $definizioni, $len)
    {
        for($i=1;$i<$len;$i++)
        {
            $el_da_ins=$vocaboli[$i];
            $def_da_ins=$definizioni[$i];
            $j=$i-1;
            while ($j>=0 && $el_da_ins<$vocaboli[$j])
            {
                $vocaboli[$j+1]=$vocaboli[$j];
                $definizioni[$j+1]=$definizioni[$j];
                $j--;            
            }
            $vocaboli[$j+1]=$el_da_ins;
            $definizioni[$j+1]=$def_da_ins;   
        }
        return $vocaboli;
    }
    //FINE FUNZIONE ORDINAMENTO PER INSERIMENTO
    
    //INIZIO FUNZIONE ORDINAMENTO PER INSERIMENTO
    function ordinamento_inserimento1($vocaboli, $definizioni, $len)
    {
        for($i=1;$i<$len;$i++)
        {
            $el_da_ins=$vocaboli[$i];
            $def_da_ins=$definizioni[$i];
            $j=$i-1;
            while ($j>=0 && $el_da_ins<$vocaboli[$j])
            {
                $vocaboli[$j+1]=$vocaboli[$j];
                $definizioni[$j+1]=$definizioni[$j];
                $j--;            
            }
            $vocaboli[$j+1]=$el_da_ins;
            $definizioni[$j+1]=$def_da_ins;   
        }
        return $definizioni;
    }
    //FINE FUNZIONE ORDINAMENTO PER INSERIMENTO
    
    
    
    ?>
    ho usato 2 volte la funzione ordinamento perchè non ho idea di come creare un void function non avendo ancora un manuale sono andato per logica e così funziona, poi magari capendolo meglio lo modifico..

    con l'uso di un file txt per le parole e le definizioni è possibile usare ancora questi codici??

    Grazie per eventuali risposte
  • Re: Dizionario in PHP

    Ciao prova a usare xml che potresti cosi strutturare:
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
        <definizione>
            <chiave>Bit</chiave>
            <descrizione>
              <![CDATA[Un bit è l'unità di misura....]]>
          </descrizione>
        </definizione>
        <definizione>
            <chiave>Hard disk</chiave>
            <descrizione>
              <![CDATA[Un disco rigido, anche chiamato disco fisso.....]]>
          </descrizione>
        </definizione>
    </root>
  • Re: Dizionario in PHP

    Una volta fatto questo poi devo modificare le funzioni php che ho fatto?
  • Re: Dizionario in PHP

    Ciao Tonix,
    devi usare le classi PHP per XML che ti permetteranno di fare ricerche e estrarre i testi dal documento XML.
  • Re: Dizionario in PHP

    Salve,

    ho quasi risolto il problema del database

    Mi è rimasto un unico dubbio riguardo un'altra cosa..

    Io ho creato una semplice funzione in grado di contare i numeri di caratteri uguali tra la chiave e le parole in caso di esito negativo della ricerca in modo da rimediare ai vari errori singolare/plurale (se scrive Circuito Sequenziale invece di Circuiti Sequenziali)

    La ricerca funziona questa è la parte dove vado a stampare i risultati:
    echo ("Mi dispiace ma la parola da te cercata non è presente nel nostro archivio. Segnalaci la parola così da poterla inserire al più presto.<br>");          //se la parola non c'è scrivo il relativo msg
      echo ("<br><b>Forse cercavi:</b> ");
      for($i=0;$i<$n;$i++)
      {
          $forse=forse_cercavi($vocaboli1[$i], $stringa);
          if($forse!=-1)
          {
              echo $forse;
              echo (", ");
              $c=$c+1;
              
          } 
      }
      if($c==0)
          echo ("Non ci sono parole simili a quella cercata");  
    E' molto semplice.. Bene adesso vorrei sapere se è possibile creare un collegamento in modo tale che quando l'utente clicca sulla parola "simile" a quella cercata venga effettuata immediatamente la ricerca con quella parola..

    In pratica un collegamento ipertestuale che ha la stessa funzione del form della ricerca..

    Spero di essere stato abbastanza chiaro..

    Grazie per eventuali risposte.
  • Re: Dizionario in PHP

    Ciao i suggerimenti cliccabili sono molto utili negli strumenti di ricerca o traduzione come per la tua applicazione.
    La soluzione semplice è inserire una querystring nell'url del link generato esempio:
    <a href="/ricerca.php?chiave="Bit">Bit<a>

    Nella parte lato server oltre a verificare la presenza di dati inviati tramite POST ti vai a guardare se ne sono stati inviati tramite GET.
  • Re: Dizionario in PHP

    Funziona una meraviglia!! GRAZIE!!

    La funzione purtroppo corregge solo piccoli errori tipo qualche lettera alla fine oppure la differenza tra singolare e plurare.. Quella stile Google non la so fare xD

    Ma mi va bene lo stesso xD il mio primo script in php xD poi continuando i corsi sicuramente saprò migliorarlo e farne di migliori.. anche se nel secondo semestre come argomenti di informatica ho solo Programmazione II :S

    Vabbè grazie ancora!!
Devi accedere o registrarti per scrivere nel forum
9 risposte