Every one of us has made a spelling mistake in a Google search:
"alternitive music", for example. In doing so, you may have noticed that
Google was trying to help you by displaying: "Did you mean alternative
music?". If your site has a search function, to indicate misspellings if
no or too few results have been found is a very useful feature,
especially if the bad English of a visitor can make you miss a sale.
Fortunately, PHP's Pspell module allows for checking the spelling of a
word and suggesting a replacement from its default dictionary (you can
also create a custom dictionary).
To begin, we need to check if Pspell is installed:
Use the default dictionary
Here is a small function to help you understand how Pspell works:
that configures the dictionary:
• PSPELL_FAST is a quick method that will return the minimum of suggestions.
• PSPELL_NORMAL returns an average number of suggestions at normal speed.
• PSPELL_SLOW provides all possible suggestions, although this method takes some time to perform the spell check. We could still use other configuration options (to add, for example, a custom dictionary, as we shall see later), but as this is a quick check, we will simply create the dictionary with this line:
1.
2.
Now that the dictionary is ready, we cut the string that was passed as a parameter to obtain an array of words: ‘here my sentence‘ becomes an array of three elements, "here", "my", and "sentence". Then we check the spelling of each word using the default dictionary. Because it does not like commas, we also delete them before exploding the string. If the word has more than three characters, verification takes place and in case of misspelling, we conduct the following operations:
If a word is not in the default dictionary, you can easily add it. However, you can also create a custom dictionary to be used with the default.
Create a directory on your site where PHP has the right to write and initialize the new dictionary in it. To create a new dictionary file called
To begin, we need to check if Pspell is installed:
<?php
$config_dic= pspell_config_create ('en');
If you get an error, it isn't. On Linux systems, follow these instructions to solve the problem.Use the default dictionary
Here is a small function to help you understand how Pspell works:
<?php
function orthograph($string)
{
// Suggests possible words in case of misspelling
$config_dic = pspell_config_create('en');
// Ignore words under 3 characters
pspell_config_ignore($config_dic, 3);
// Configure the dictionary
pspell_config_mode($config_dic, PSPELL_FAST);
$dictionary = pspell_new_config($config_dic);
// To find out if a replacement has been suggested
$replacement_suggest = false;
$string = explode('', trim(str_replace(',', ' ', $string)));
foreach ($string as $key => $value) {
if(!pspell_check($dictionary, $value)) {
$suggestion = pspell_suggest($dictionary, $value);
// Suggestions are case sensitive. Grab the first one.
if(strtolower($suggestion [0]) != strtolower($value)) {
$string [$key] = $suggestion [0];
$replacement_suggest = true;
}
}
}
if ($replacement_suggest) {
// We have a suggestion, so we return to the data.
return implode('', $string);
} else {
return null;
}
}
To use this function, it is sufficient to pass to it a string parameter:<?php
$search = $_POST['input'];
$suggestion_spell = orthograph($search);
if ($suggestion_spell) {
echo "Try with this spelling : $suggestion_spell";
}
If the string you submit to Pspell is "here is my mispellid word",
the previous script will return: "Try with this spelling: Here is my
misspelled word." However, Pspell is no miracle worker, especially if
you're automatically using the first suggested spelling alternative! For
best results, you can use all the suggestions offered by Pspell. The
following script returns twenty proposals around the word "lappin":<?php
$dict = pspell_new ("en");
if (!pspell_check ($dict, "lappin")) {
$suggestions = pspell_suggest ($dict, "lappin");
foreach ($suggestions as $suggestion) {
echo "Did you mean: $suggestion?<br />";
}
}
You must configure a dictionary to initialize Pspell. To do this,
create a descriptor toward a configuration file of the dictionary,
change some options of this descriptor, then use the configuration
dictionary to create a second descriptor for the real dictionary. If
this sounds a bit complicated, do not worry: The code rarely changes and
you can usually copy it from another script. However, here we will
study it step by step. Here is the codethat configures the dictionary:
// Suggests possible words in case of misspelling
$config_dic = pspell_config_create('en');
// Ignore words under 3 characters
pspell_config_ignore($config_dic, 3);
// Configure the dictionary
pspell_config_mode($config_dic, PSPELL_FAST);
$config_dic
is the initial template which controls the options for your dictionary. You must load all the options in $config_dic
, then use it to create the dictionary. pspell_config_create()
creates an English dictionary (en). To use the English language and
specify that you prefer American spelling, specify ‘en’ as the first
parameter and 'american' as the second. pspell_config_ignore()
indicates that your dictionary will ignore all words of 3 letters or less. Finally, pspell_config_mode()
indicates to Pspell the operating mode:• PSPELL_FAST is a quick method that will return the minimum of suggestions.
• PSPELL_NORMAL returns an average number of suggestions at normal speed.
• PSPELL_SLOW provides all possible suggestions, although this method takes some time to perform the spell check. We could still use other configuration options (to add, for example, a custom dictionary, as we shall see later), but as this is a quick check, we will simply create the dictionary with this line:
$dictionary = pspell_new_config($config_dic);
From this point you can use the dictionary in two ways:1.
pspell_check($dictionary, "word")
returns true
if "word" is in the dictionary.2.
pspell_suggest($dictionary, "word")
returns an array of
suggested words if "word" is not in the dictionary (the first element of
this array is the most likely candidate). The number of words obtained
varies, but you get more with PSPELL_SLOW and fewer with PSPELL_FAST.Now that the dictionary is ready, we cut the string that was passed as a parameter to obtain an array of words: ‘here my sentence‘ becomes an array of three elements, "here", "my", and "sentence". Then we check the spelling of each word using the default dictionary. Because it does not like commas, we also delete them before exploding the string. If the word has more than three characters, verification takes place and in case of misspelling, we conduct the following operations:
- We ask Pspell to provide an array of suggestions for correction.
- We take the most likely suggestion (the first element of the array $suggestion) and we replace the misspelled word with it.
- We set the
$replacement_suggest
flag to true so that at the end of the processing loop, we know that we have found a spelling mistake somewhere in$string
. At the end of the loop, if there were spelling corrections, we are reforming the string from elements of the corrected array and we return this chain. Otherwise, the function returns null to indicate that it has not detected misspelling.
If a word is not in the default dictionary, you can easily add it. However, you can also create a custom dictionary to be used with the default.
Create a directory on your site where PHP has the right to write and initialize the new dictionary in it. To create a new dictionary file called
perso.pws
in the directory path of your server, use the following script:<?php
$config_dic = pspell_config_create ('en');
pspell_config_personal($config_dic, 'path / perso.pws');
pspell_config_ignore($config_dic , 2);
pspell_config_mode($config_dic, PSPELL_FAST);
$dic = pspell_new_config($config_dic);
This is the same script as in the previous section, but with an essential addition: calling pspell_config_personal()
initializes a personal dictionary file. If this file does not already
exist, Pspell creates a new one for you. You can add to this dictionary
as many words as you want by using the following function:`pspell_add_to_personal($dic, "word");`
As long as you have not saved the dictionary, words are added to it
temporarily. Therefore, after inserting the words you want, add this
line to the end of the script:pspell_save_wordlist($dic);
Then call pspell_config_personal()
as above in the demo script and your new dictionary will be ready.
Thanks for this information about PHP. useful detail about PHP. PHP training in Bangalore
ReplyDelete
ReplyDeleteThank you so much for this amazing posts and please keep update like this excellent article. thank you for sharing such a great blog with us.
diigtal marketing classes in nagpur
web design classes in nagpur
thanks for the post.
ReplyDeletedigital marketing training in bhopal
digital marketing training in bhopal
SEO training in bhopal
PHP training in bhopal
PHP training in bhopal
SEO Training in Janakpuri, SEO is that the method of moving the visibility of the website during a search engine's natural or un-paid or organic search results. SEO is required for your web site to rank well within the computer program result pages.
ReplyDeleteSEO Training in Janakpuri
Web Designing Course in Dwarka
PHP Institute in Uttam Nagar
ODASS SOFTWARE DEVELOPMENT, dedicated towards the developing the user-friendly and technically strong platform for the clients to use. We even have 10+ Softwares who are always intact with the services we provide.School Management software in bhopal
ReplyDeleteBest Offers upto 40 to 80 % off in Bags and Backpacks Products
ReplyDeleteOdassmart is the best E-commerce site, we are provided best MahaFestivals offers upto 50 to 90% off in Bags and Backpacks.
thank you for sharing a piece of valuable information
ReplyDeleteDigital Marketing Company in chennai
Digital marketing Services in chennai
mobile application development services chennai
Online shopping Website Developers in chennai
Thank you sharing an awesome blog.
ReplyDeleteIf you want Want best quality auto glass repair service then look no further than Duran's Auto Glass repair shop in San Pablo.