English version - Search for UMLAUTE -> quick and dirty MOD here!
bitboy0 - 20-05-2004, 13:07 Temat postu: Search for UMLAUTE -> quick and dirty MOD here! Why it normaly doesn't work:
The search.php filters out all the ilegal chars and stores only the international ones. So f.e. if someone posts
Kühlung
the board cuts of the "ü" and because of it makes no sense to store the "K" as a single char it stores only "hlung" ...
So what I do is to replace the ilegal chars with codes that are allowed! from "ü" I make "ue" for example. This is done before the Board checks for ilegal chars. The word with the replaced chars is only stored in the search_wordlist - Table on the MySQL-Server... NOT in the post_text ... so noone can ever see the "translated" words ... The replacement chars must be selectet in an way that no regular word contains them ... so choose construktions like "xa1x" for "á" if you like to add your languages spezial chars. The german "Umlaute" are special because the replacement "ae" for an "ä" is often used if Umlaute are not available on a keyboard.
Here the small changes:
open includes/functions_search.php
find Kod: | if ( $mode == 'post' )
{ | and add after Kod: | // Replace german Umlaute by international Chars
$entry = str_replace ( "ä","ae",$entry);
$entry = str_replace ( "ö","oe",$entry);
$entry = str_replace ( "ü","ue",$entry);
$entry = str_replace ( "ß","ss",$entry);
$entry = str_replace ( "Ä","Ae",$entry);
$entry = str_replace ( "Ö","Oe",$entry);
$entry = str_replace ( "Ü","Ue",$entry); | save and upload!
open search.php
find Kod: | if ( isset($HTTP_POST_VARS['search_keywords']) || isset($HTTP_GET_VARS['search_keywords']) )
{
$search_keywords = ( isset($HTTP_POST_VARS['search_keywords']) ) ? $HTTP_POST_VARS['search_keywords'] :
$HTTP_GET_VARS['search_keywords']; | and add after Kod: | // Umlaute MOD
$search_keywords_old = str_replace("*","",$search_keywords);
$search_keywords_old = str_replace(" AND "," ",$search_keywords_old);
$search_keywords_old = str_replace(" OR "," ",$search_keywords_old);
$search_keywords_old = str_replace(" NOT "," ",$search_keywords_old);
$search_keywords_old = str_replace(" and "," ",$search_keywords_old);
$search_keywords_old = str_replace(" or "," ",$search_keywords_old);
$search_keywords_old = str_replace(" not "," ",$search_keywords_old);
$search_keywords = str_replace ( "ä","ae",$search_keywords);
$search_keywords = str_replace ( "ö","oe",$search_keywords);
$search_keywords = str_replace ( "ü","ue",$search_keywords);
$search_keywords = str_replace ( "ß","ss",$search_keywords);
$search_keywords = str_replace ( "Ä","Ae",$search_keywords);
$search_keywords = str_replace ( "Ö","Oe",$search_keywords);
$search_keywords = str_replace ( "Ü","Ue",$search_keywords); |
find Kod: | $highlight_active = '';
$highlight_match = array(); | and add after Kod: | // Umlaute MOD
$split_search = split(' ',$search_keywords_old);
| save and upload!
go to the Admin-Panel and Rebuild-Search ...
After that it should work.
If you find a better way to replace the ilegal chars or any other good idea .. just post it here This is not a complete solution... there are some situations where this finds more than the words you're searching for ... but without this MOD you can't find any word with special-chars...
regards Sven
Przemo - 20-05-2004, 13:36
Nice, if I find a completed mod for replacement all possible chars I will install it to my package.
|
|
|