| Autor | Zpráva | ||
|---|---|---|---|
| Houba Bouha Profil * |
#1 · Zasláno: 17. 7. 2013, 13:04:56
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 * |
#3 · Zasláno: 17. 7. 2013, 13:46:45
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 |
#4 · Zasláno: 17. 7. 2013, 14:10:38
ještě jsem zapomněl,
//clean string //only a-zA-Z0-9 and spaces
$str = preg_replace('#[^a-zA-Z0-9\s]#','',$str); |
||
| Houba Bouha Profil * |
#5 · Zasláno: 17. 7. 2013, 14:17:37
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 |
#6 · Zasláno: 17. 7. 2013, 20:40:46
#[^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 * |
#7 · Zasláno: 18. 7. 2013, 06:03:16
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. |
||
|
Časová prodleva: 13 let
|
|||
0