Esercizio PHP?

JackIlPazzo

Utente Attivo
25 Lug 2014
69
0
6
Ciao a tutti, chi può darmi una mano a realizzare quest'esercizio:

scrivi una parola e controlla se la parola scritta è presente nel dizionario (precedentemente scaricato perciò in un file di testo) se non è presente deve stamparti un elenco di dieci parole che hanno in comune delle lettere con la parola scritta.

Grazie :)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per trovare se esiste è semplice ipotizzando che il file si chiami dizionario.txt
PHP:
<?php
$dizionario=array();
$dizionario=file(dizionario.txt);//legge il dizionario e lo mette in un array (non ho messo il percorso)
$parola="pinco";
if(in_array($parola, $dizionario)){
	echo "la parola $parola è nel dizionario <br />";
}else{
	//vedi sotto
}
?>
poi per vedere se ci sono simili devi dirmi cosa intendi per simili cioe altre parole che contengano la parola cercata o che ci sia ena corrispondenza di un certo numero di caratteri
es.
se cerci pinco devi trovare le parole del tipo
abspinco (contiene pinco)
bopincoba (contiene pinco)
pincolini (contiene pinco)
...
oppure
panco (4 caratteri in comune)
banco (3 caratteri in comune)
....
 

JackIlPazzo

Utente Attivo
25 Lug 2014
69
0
6
ciao
per trovare se esiste è semplice ipotizzando che il file si chiami dizionario.txt
PHP:
<?php
$dizionario=array();
$dizionario=file(dizionario.txt);//legge il dizionario e lo mette in un array (non ho messo il percorso)
$parola="pinco";
if(in_array($parola, $dizionario)){
	echo "la parola $parola è nel dizionario <br />";
}else{
	//vedi sotto
}
?>
poi per vedere se ci sono simili devi dirmi cosa intendi per simili cioe altre parole che contengano la parola cercata o che ci sia ena corrispondenza di un certo numero di caratteri
es.
se cerci pinco devi trovare le parole del tipo
abspinco (contiene pinco)
bopincoba (contiene pinco)
pincolini (contiene pinco)
...
oppure
panco (4 caratteri in comune)
banco (3 caratteri in comune)
....
Ciao, grazie per la risposta. Per le parole simili intendo quelle che hanno un numero minimo di lettere differenti, quindi che sono più simili alla parola cercata. Il tuo secondo esempio va bene.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
però provalo perchè non l'ho testato e buttato giu di getto
PHP:
<?php
$dizionario=array();
$dizionario=file(dizionario.txt);//legge il dizionario e lo mette in un array (non ho messo il percorso)
$parola="pinco";
if(in_array($parola, $dizionario)){
    echo "la parola $parola è nel dizionario <br />";
}else{
	$sim=80;//grado di similitudine in % (cerca di valutare se di più o di meno)
	/*
	conviene operare con la percentuale perchè es se la parola cercata è
	scalo
	e nel dizionario c'è
	supercalifragilisticespiralidoso
	di certo non sono simili anche se alcuni caratteri in comune
	*/
	$conta=0;
	foreach($dizionario as $p){
		$comuni=similar_text($parola , $p);//conto i caratteri in comune
		$lunga=strlen($p);
		$similitudine=$comuni/$lunga*100;//calcolo la percentuale di similitudine
		if($similitudine >=$sim){
			$simile[]=$p;//inserisco in un array
			$conta++;//e incremento il contatore
		}
	}
	if($conta==0){
		echo "non sono state trovate parole simili a $parola con similitudine > $sim % <br />";
	}else{
		if($conta > 10){$conta =10;}//dato che ne devo trovare al massimo 10
			echo "trovate $conta parole simili a $parola, tra cui: <br />";
		for($k=0; $k <$conta; $k++){
			echo $simile[$k]."<br />";
		}
	}
}
?>
attento però che similar_text è casesensitive es. se pinco e Panco trova solo 3 caratteri p != P, se la vuoi rendere caseinsentive devi aggiungere
nel foreach le istruzioni
PHP:
<?php
//....
foreach($dizionario as $p){
		$parola=strtolower($parola);
		$p=strtolower($p);//rendendole entrambe in caratteri minuscoli
		$comuni=similar_text($parola , $p)
//...
?>
se non funziona dimmi quali errori riporta e/o perche non funziona
 

JackIlPazzo

Utente Attivo
25 Lug 2014
69
0
6
Ciao,

allora nessun errore di sintassi. Però mi dice sempre che non sono state trovate parole simili, com'è possibile?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
mi sono accorto che leggendo si puo trascinare detro degli spazi che danno fastidio
aggiungi
PHP:
<?php
$dizionario=array();
$dizionario=file('dizionario.txt');//legge il dizionario e lo mette in un array (non ho messo il percorso)
$dizionario = array_map("trim", $dizionario);//toglie eventuali spazi
$parola="pinco";
//....
?>
fatto prima prova con dizionario.txt contenente
asdrubale
pinco
pallino
sofonisba

output:
la parola pinco è nel dizionario
modificato il dizionario in
asdrubale
pincaccio
pallino
sofonisba

output:
trovate 2 parole simili a pinco, tra cui
pincaccio
pallino
 

JackIlPazzo

Utente Attivo
25 Lug 2014
69
0
6
Funziona veramente molto bene. Ti ringrazio per l'aiuto che mi hai dato :)
Ti auguro una buona giornata.
 

Oslino

Nuovo Utente
18 Gen 2015
4
0
0
Rimini
Probabilmente avete fatto completamente il compito che gli aveva chiesto il suo professore... :book:
 
Discussioni simili
Autore Titolo Forum Risposte Data
C [PHP] problema con un esercizio PHP 2
T [PHP] Calcolo anzianità soggetti [era: Help me :( Esercizio per me impossibile] PHP 9
C Esercizio Php PHP 1
M AIUTO ESERCIZIO JAVA Javascript 1
S Consiglio esercizio Javascript Javascript 2
G esercizio lista in c C/C++ 1
M [java] esercizio lunghezza array di stringhe Java 0
A [java] problema esercizio Java 0
A [java] problema esercizio array Java 5
C esercizio in c progetto eulero C/C++ 0
ggt90 Esercizio javascript sugli array di oggetti Javascript 0
M Esercizio Thread Java 0
M creazione pagina web per esercizio corso di web design Offerte e Richieste di Lavoro e/o Collaborazione 2
D Esercizio C e problema con SCL C/C++ 0
M Esercizio JavaScript-JSON Javascript 8
K Esercizio ciclo for C/C++ 1
A Esercizio ArrayList Java 1
Z Esercizio HTTP su SSL Apache 1
L esercizio java Javascript 11
B Esercizio PDO PHP 20
L esercizio javascript Javascript 0
C Esercizio: Inserire elenco numeri e controllare che siano di tupi numerico Javascript 2
V Esercizio javascrip Javascript 1
L Esercizio con le classi PHP 0
L Semplice esercizio funzioni JavaScript Javascript 5
A esercizio javascript e form! Javascript 13
F esercizio csma/cd Reti LAN e Wireless 0
H Teoria: Schema Logico/concettuale Di Un Esercizio. Aiutatemi Per Favore Database 1
M Aiuto per esercizio Programmazione 0
L Esercizio, realizzare un campionato PHP 1
minatore esercizio array PHP 4
B esercizio per esame.... AIUTO!!! Javascript 4
E esercizio..realizzare funzione... Classic ASP 5
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4

Discussioni simili