Autor Zpráva
Houba Bouha
Profil *
Ve výsledku se mi nezobrazují háčky a čárky. Neviznám se v tom co změnit. Pomůžete prosím?

<?php
if(!defined("IN_MYBB"))
{
    die("Outside of MyBB");
}




function kapsKeyWords_info()
{
    return array(
        "name"            => "Keyword Generator",
        "description"    => "Generates Keywords for your Threads",
        "website"        => "http://mods.mybb.com",
        "author"        => "Kapsonfire",
        "authorsite"    => "http://www.pokecom.eu",
        "version"        => "0.1",
        "guid"            => "2b4101d50617d7479815535c26cd0033",
        "compatibility" => "16*"
    );
}
//define global variables for this plugin
$KAPS_KEY_MESSAGES = '';
   
$plugins->add_hook("parse_message", "hook_KapsKeyPosts");
$plugins->add_hook("showthread_end", "hook_KapsKeyGlobal");
function hook_KapsKeyPosts($message)
{
    global $KAPS_KEY_MESSAGES;
    $KAPS_KEY_MESSAGES .= "\n".$message;
    
    
    return $message;

}
function hook_KapsKeyGlobal()
{
    global $mybb,$headerinclude;
    global $KAPS_KEY_MESSAGES;
    $keys = '';

    $keywords = kapsGetKeys($KAPS_KEY_MESSAGES,$mybb->settings['KAPS-KEY-Maximum'],$mybb->settings['KAPS-KEY-Forbidden']);
    foreach($keywords as $key)
    {
        $keys .= $key.', ';
    }
    $keys = substr($keys,0,strlen($keys)-2);
    
    $headerinclude .= '<meta name="keywords" content="'.$keys.'" />';
}





function kapsKeyWords_activate()
{
    global $db;
    require '../inc/adminfunctions_templates.php';
    
    $query  = $db->simple_select("settinggroups","COUNT(*) as rows");
    $rows   = $db->fetch_field($query,"rows");
    $iad_group = array('name' => 'kapsKeywords','title' => 'Keyword Generator','description' => 'Settings for Keyword Generator','disporder' =>$rows + 1,'isdefault' => '0',);
    $db->insert_query('settinggroups',$iad_group);
    $gid = $db->insert_id();
    
    //onoff
    $setting1       = array('name' => 'KAPS-KEY-Activate',
                           'title' =>'On/Off',
                           'description' =>'Activate Keyword Generator?',
                           'optionscode' => 'onoff',
                           'value' => '1',
                           'disporder' => 1,
                           'gid' => intval($gid),);
    //Forbidden                   
    $setting2       = array('name' => 'KAPS-KEY-Forbidden',
                           'title' =>'Forbidden words',
                           'description' =>'Define words that must not be in the keywords. Only separate by a comma!',
                           'optionscode' => 'textarea',
                           'value' => '',
                           'disporder' => 2,
                           'gid' => intval($gid),);
    //maximum keywords
    $setting3       = array('name' => 'KAPS-KEY-Maximum',
                           'title' =>'Maximum',
                           'description' =>'Number of maximum keywords. Recommended: 20',
                           'optionscode' => 'text',
                           'value' => '20',
                           'disporder' => 3,
                           'gid' => intval($gid),);
    $db->insert_query('settings',$setting1);
    $db->insert_query('settings',$setting2);
    $db->insert_query('settings',$setting3);
    rebuildsettings();
}
function kapsKeyWords_deactivate()
{
    global $db;
    require MYBB_ROOT.'/inc/adminfunctions_templates.php';
    
    
    $db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title='Keyword Generator'");
    $db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name IN('KAPS-KEY-Activate', 'kapsKeywords')");
    $db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name IN('KAPS-KEY-Forbidden', 'kapsKeywords')");
    $db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name IN('KAPS-KEY-Maximum', 'kapsKeywords')");
    $db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE name='kapsKeywords'");
    rebuildsettings();
}

function kapsGetKeys($str,$max = 20,$forbidden='')
{
    
    $keywords = array();
    
    $str=utf8_decode($str);
    
    //normalize string
    $normalizeChars = array(
                            'Š'=>'S', 'š'=>'s', 'Đ'=>'Dj','Ž'=>'Z', 'ž'=>'z', 'Ŕ'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ă'=>'A', 'Ä'=>'A',
                            'Ĺ'=>'A', 'Ć'=>'A', 'Ç'=>'C', 'Č'=>'E', 'É'=>'E', 'Ę'=>'E', 'Ë'=>'E', 'Ě'=>'I', 'Í'=>'I', 'Î'=>'I',
                            'Ď'=>'I', 'Ń'=>'N', 'Ň'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Ő'=>'O', 'Ö'=>'O', 'Ř'=>'O', 'Ů'=>'U', 'Ú'=>'U',
                            'Ű'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Ţ'=>'B', 'ß'=>'Ss','ŕ'=>'a', 'á'=>'a', 'â'=>'a', 'ă'=>'a', 'ä'=>'a',
                            'ĺ'=>'a', 'ć'=>'a', 'ç'=>'c', 'č'=>'e', 'é'=>'e', 'ę'=>'e', 'ë'=>'e', 'ě'=>'i', 'í'=>'i', 'î'=>'i',
                            'ď'=>'i', 'đ'=>'o', 'ń'=>'n', 'ň'=>'o', 'ó'=>'o', 'ô'=>'o', 'ő'=>'o', 'ö'=>'o', 'ř'=>'o', 'ů'=>'u',
                            'ú'=>'u', 'ű'=>'u', 'ý'=>'y', 'ý'=>'y', 'ţ'=>'b', '˙'=>'y', 'ƒ'=>'f'
    );
    $str = strtr($str,$normalizeChars);
    
    
    
    //forbidden in array
    $forbidden = explode(',',$forbidden);
    $forbidden = array_flip($forbidden);
    
    
    //clean string from html/bbcode
    $str = html_entity_decode($str);
    $str = strip_tags($str);
    $str = preg_replace('#\[(.*?)\]#','',$str);
    
    //replace - with space
    $str = preg_replace('#-#',' ',$str);
    
    //string in lowcase
    $str = strtolower($str);
    

    
    //clean string //only a-zA-Z0-9 and spaces
    $str = preg_replace('#[^a-zA-Z0-9\s]#','',$str);
    
    
    
    //split by whitespace
    $splits = preg_split('#\s+#',$str);
    
    foreach($splits as $key)
    {

        $key=trim($key);
        if($key=="" || strlen($key) < 4 || is_numeric($key) || isset($forbidden[$key])) continue;
        if(!isset($keywords[$key]))
        {
            $keywords[$key] = 1;
        }
        else
        {
            $keywords[$key]++;
        }
    }
    //sort, reverse
    asort($keywords);
    $keywords = array_reverse($keywords);
    $tmpkeywords =  array_keys(array_slice($keywords,0,$max));
    $keywords = array();
    foreach($tmpkeywords as $key)
    {
        array_push($keywords,$key);
    }
    return $keywords;
    }
?>
Micruss
Profil
protože, máš v kódu todle, což nahraje Š>S apod... jestli chceš aby se ti zobrazovaly Š apod.. tak smaž konkrétní znaky z tohodle array(); a nebo to smaž celý a pak uprav dál ten kód
   //normalize string
    $normalizeChars = array(
                            'Š'=>'S', 'š'=>'s', 'Đ'=>'Dj','Ž'=>'Z', 'ž'=>'z', 'Ŕ'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ă'=>'A', 'Ä'=>'A',
                            'Ĺ'=>'A', 'Ć'=>'A', 'Ç'=>'C', 'Č'=>'E', 'É'=>'E', 'Ę'=>'E', 'Ë'=>'E', 'Ě'=>'I', 'Í'=>'I', 'Î'=>'I',
                            'Ď'=>'I', 'Ń'=>'N', 'Ň'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Ő'=>'O', 'Ö'=>'O', 'Ř'=>'O', 'Ů'=>'U', 'Ú'=>'U',
                            'Ű'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Ţ'=>'B', 'ß'=>'Ss','ŕ'=>'a', 'á'=>'a', 'â'=>'a', 'ă'=>'a', 'ä'=>'a',
                            'ĺ'=>'a', 'ć'=>'a', 'ç'=>'c', 'č'=>'e', 'é'=>'e', 'ę'=>'e', 'ë'=>'e', 'ě'=>'i', 'í'=>'i', 'î'=>'i',
                            'ď'=>'i', 'đ'=>'o', 'ń'=>'n', 'ň'=>'o', 'ó'=>'o', 'ô'=>'o', 'ő'=>'o', 'ö'=>'o', 'ř'=>'o', 'ů'=>'u',
                            'ú'=>'u', 'ű'=>'u', 'ý'=>'y', 'ý'=>'y', 'ţ'=>'b', '˙'=>'y', 'ƒ'=>'f'
    );
//....
Houba Bouha
Profil *
Micruss:

Smazal jsem toto:
         'Š'=>'S', 'š'=>'s', 'Đ'=>'Dj','Ž'=>'Z', 'ž'=>'z', 'Ŕ'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ă'=>'A', 'Ä'=>'A',
                            'Ĺ'=>'A', 'Ć'=>'A', 'Ç'=>'C', 'Č'=>'E', 'É'=>'E', 'Ę'=>'E', 'Ë'=>'E', 'Ě'=>'I', 'Í'=>'I', 'Î'=>'I',
                            'Ď'=>'I', 'Ń'=>'N', 'Ň'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Ő'=>'O', 'Ö'=>'O', 'Ř'=>'O', 'Ů'=>'U', 'Ú'=>'U',
                            'Ű'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Ţ'=>'B', 'ß'=>'Ss','ŕ'=>'a', 'á'=>'a', 'â'=>'a', 'ă'=>'a', 'ä'=>'a',
                            'ĺ'=>'a', 'ć'=>'a', 'ç'=>'c', 'č'=>'e', 'é'=>'e', 'ę'=>'e', 'ë'=>'e', 'ě'=>'i', 'í'=>'i', 'î'=>'i',
                            'ď'=>'i', 'đ'=>'o', 'ń'=>'n', 'ň'=>'o', 'ó'=>'o', 'ô'=>'o', 'ő'=>'o', 'ö'=>'o', 'ř'=>'o', 'ů'=>'u',
                            'ú'=>'u', 'ű'=>'u', 'ý'=>'y', 'ý'=>'y', 'ţ'=>'b', '˙'=>'y', 'ƒ'=>'f'

ale je to stejné, znaky š č ř ž ý á í é to prostě neukáže.
Micruss
Profil
ještě jsem zapomněl,
//clean string //only a-zA-Z0-9 and spaces
    $str = preg_replace('#[^a-zA-Z0-9\s]#','',$str);
tam musíš doplnit znaky, který checš zobrazit ščř atd..
Houba Bouha
Profil *
Micruss:
Omlouvám se, ale nevím kam je tam mám napsat, nějak takto?

$str = preg_replace('#[^a-zA-Z0-9\s]ě,š,č,ř,ž,ý,á,í,é','',$str); ?
Omlouvám se pokud je to špatně a děkuji za trpělivost se mnou. Jste moc hodnej.
Micruss
Profil
#[^a-zA-Z0-9ščřž\s]#

ščř... atd...

a další znaky... a jestli chcete i velký písmena tak je musíte taky napsat
Houba Bouha
Profil *
Mám to takto:
    //clean string //only a-zA-Z0-9 and spaces
    $str = preg_replace('#[^a-zA-Z0-9ščřž\s]#','',$str);


ale ani ř š č to nenapíše prostě nic. Nemůže to být ještě něčím jiným?
Kajman
Profil
Houba Bouha:

Nepomůže přidat modifikátor u?
#[^a-zA-Z0-9ščřž\s]#u

Ale přijde mi, že opravujete odstraňování znaků z části určené pro vyhledávání ingorující diakritiku. Pokud toto chcete zachovat a nefunguje Vám ukládání diakritiky v řádných sloupcích bude problém spíše v konfiguraci tabulky nebo v připojení k databázi. Ani jedno zde nelze vyčíst. Ukažte strukturu tabulky včetně zvolené znakové sady pro ukládání problematického sloupce.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: