PHP Konverze diakritiky
AD MOB
Ke konverzi diakritiky slouží v PHP mnoho funkcí, ale výsledky jsou různé.
Někdy je lepší si udělat vlastní funkci.
Níže uvedená funkce zamění v řetězci paznaky, za jejich čitelný ekvivalent:
Někdy je lepší si udělat vlastní funkci.
Níže uvedená funkce zamění v řetězci paznaky, za jejich čitelný ekvivalent:
/**
* konverze diakritiky - okhelp.cz
*/
function diakritika($vstup) {
$arMala = array('á'=> 'á', 'ÄŤ'=> 'č', 'ÄŹ'=> 'ď', 'Ă©'=> 'é', 'Ä›'=> 'ě',
'Ă'=> 'i', 'Ĺ'=> 'ň', 'Ăł'=> 'ó', 'Ĺ™'=> 'ř', 'š'=> 'š', 'ĹĄ'=> 'ť', 'Ăş'=> 'ú', 'ĹŻ'=> 'ů', 'Ă˝'=> 'ý', 'Ĺľ'=> 'ž' );
$arVelka = array('Ă'=> 'Á', 'Ä©'=> 'Č', 'Ĭ'=> 'Ď', 'É'=> 'É', 'ı'=> 'Ě',
'Ă«'=> 'Í', 'Ň'=> 'Ň', 'Ă"'=> 'Ó', 'Ĺ'=> 'Ř', 'Ĺ '=> 'Š', 'Ť'=> 'Ť', 'ñ'=> 'Ú', 'ĹŽ'=> 'Ů', 'ö'=> 'Ý', 'Ĺ˝'=> 'Ž' );
foreach ($arMala as $key=>$value) {
$vstup = str_replace($key, $value, $vstup);
}
foreach ($arVelka as $key=>$value) {
$vstup = str_replace($key, $value, $vstup);
}
return $vstup;
}
mb_internal_encoding("UTF-8");
$s = 'áčď';
$novy = diakritika($s); // $novy == ačď
/*******************
* převede kůň na kun
* máte možnosti buď si napíšete funkci sami něci jako diakritikaKlasicka($vstup)
* nebo použijete $word = iconv("utf-8", "us-ascii//TRANSLIT", $word);
*ale výsledek otestujte, ne vždy je u iconv uspokojivý
*/
$word = "kůň";
$word = iconv("utf-8", "us-ascii//TRANSLIT", $word);
function diakritikaKlasicka($vstup) {
$arMala = array('á'=> 'a', 'č'=> 'c', 'ď'=> 'd', 'é'=> 'e', 'ě'=> 'e',
'í'=> 'i', 'ň'=> 'n', 'ó'=> 'o', 'ř'=> 'r', 'š'=> 's', 'ť'=> 't', 'ú'=> 'u',
'ů'=> 'u', 'ý'=> 'y', 'ž'=> 'z' );
$arVelka = array('Á'=> 'A', 'Č'=> 'C', 'Ď'=> 'D', 'É'=> 'E', 'Ě'=> 'E',
'Í'=> 'I', 'Ň'=> 'N', 'Ó'=> 'O', 'Ř'=> 'R', 'Š'=> 'S', 'Ť'=> 'T',
'Ú'=> 'U', 'Ů'=> 'U', 'Ý'=> 'Y', 'Ž'=> 'Z' );
foreach ($arMala as $key=>$value) {
$vstup = str_replace($key, $value, $vstup);
}
foreach ($arVelka as $key=>$value) {
$vstup = str_replace($key, $value, $vstup);
}
return $vstup;
}
77LW NO topic_id
AD
Další témata ....(Topics)
htaccess rady a zkušenosti
Testování kódu htaccess ZDEPříklady na jakpsatweb
Dokumentace na apache.org
Testování regexů
Komentar nesmi byt na stejnem radku, jako kod. Zde jsou komentare, na konci radku (vedle) prikazu, jen kvuli snadnejsimu pochopeni kodu.
RewriteCond string (regex1) # tento radek nebude fungovat, koment musi byt na samostatnem radku, nejlepe nad provadenym kodem.
# tak je to spravne, komentar na samostatnem radku a nejlepe nad ukolem
RewriteCond string (regex1)
RewriteRule dosáhne jen na regex předchozího RewriteCond!
RewriteCond string (regex1) # nedosahne
RewriteCond string (regex2)
RewriteRule (regex) %1 # v %1 bude regex2
Číslo za % udává, kolikátá skupina předchozího regexu v RewriteCond bude použita. %0 vezme vše ze všech skupin.
Pokud skupina neexistuje, tak se vypíše jako %N , kde N je číslo skupiny, která nebyla nalezena.
$1 číslo za $ udává kolikátá skupina regexu bude použita, ale platí jen pro RewriteRule z jeho vlastního regexu. $0 vezme všchny skupiny (group) regexu z RewriteRule.
RewriteCond může být několikrát za sebou, ale jakmile se jedna z těchto podmínek nesplní, tak se nesplní ani následující RewriteRule!
RewriteCond # podmínka nesplněna
RewriteCond # splněna
RewriteRule # se nevykoná, protože jedna z podmínek nebyla splněna
RewriteRule přísluší vždy k předchozímu - předchozí skupině RewriteCond. Následující RewriteRule už je samostatné viz příklad:
RewriteCond
RewriteRule # tohle reaguje na předchozí podmínku a vykoná se, když je podmínka splněna
RewriteRule # tohle už je samostatné a nebude brát ohled na podmínku - podmínky v předchozích řádcích.
Využití regexu, který bude vytvořen až v následujícím RewriteRule. Regex Back-Reference Availability
Date: 27.02.2020 - 11:11
Styly se nacházejí v příslušné složce temáta, které používáme. Například:
Jednotlivé soubory můžeme upravovat, ale je nutné provádět refresh stylu z Admin centra ACP, záložka Styles -> Style components
Další soubory stylů přidáváme do jako import:
myforum/styles/prosilver/theme/stylesheet.css
Styly můžeme též editovat z ACP tabulka Styles -> Themes a zvolti Edit příslušné šablony
a po uložení provedeme refresh témata.
Nebo Styly - Skiny - Upravit konkrétní šablonu (prosilver atd.)
Někdy musíme vymazat i soubory ze složky cache a ponechat tam jen index.html a .htaccess
mojeforum/styles/prosilver/theme/
Jednotlivé soubory můžeme upravovat, ale je nutné provádět refresh stylu z Admin centra ACP, záložka Styles -> Style components
Další soubory stylů přidáváme do jako import:
myforum/styles/prosilver/theme/stylesheet.css
@import url("prs.css");
Styly můžeme též editovat z ACP tabulka Styles -> Themes a zvolti Edit příslušné šablony
a po uložení provedeme refresh témata.
Nebo Styly - Skiny - Upravit konkrétní šablonu (prosilver atd.)
Někdy musíme vymazat i soubory ze složky cache a ponechat tam jen index.html a .htaccess
Pokud chceme při kompilaci kódu zobrazit chybová hlášení,
odkomentujeme příslušné řádky v souboru php.ini, jehož adresu
získáme pomocí funkce phpinfo() a přepneme Off na On u
display_errors.
Podrobnosti se dočtete v komentářích k jednotlivým nastavením v php.ini
Podrobnosti se dočtete v komentářích k jednotlivým nastavením v php.ini
error_reporting = E_ALL & ~E_NOTICE // vypise i parse errors
display_errors = On
Někdy potřebujeme získat url adresu pro menu, nebo odkazy atd.
pozor funkce je empty() a ne emptyempty
pozor funkce je empty() a ne emptyempty
$currentURL = (!empty($_SERVER['HTTPS']))
? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']
: "//".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
Adresa dynamická na statickou adresu
Více na: https://www.jakpsatweb.cz/server/mod_rewrite/mod-rewrite-priklady.html
RewriteEngine On
RewriteBase /
# //localhost/internet/download.php?ds=NECO zadana adresa
# QUERY_STRING je vse za otaznikem tedy ds=NECO
# kdyz query string zacina ds=(NECO) a uz za nim neni vubec nic, zadny dalsi &val=value ^&
RewriteCond %{QUERY_STRING} ^ds=([^&]+)$
# tak download.php nahradit za %1-download-data-link.html? pricemz %1 je to co se vybraloz za ds=, tedy NECO
# R=301 je presmerovani takze znovu to posle na web ke kontrole napr. do tohoto souboru kdyz je adresa na tento web
# L .. last .. posila adresu ke kontrole na web. adresa bude NECO-download-data-link.html
RewriteRule ^download\.php$ %1-download-data-link.html? [R=301,L,NE]
# pri dalsi kontrole prevede NECO-download-data-link.html zpet na download.php?rw=3&ds=NECO a uz to hleda v adresarich
# ale v adresnim radku prohlizece uz zustane ta prichozi NECO-download-data-link.html
#QSA prida query string, bude se pak jeste hodit. rw=3 muzeme pak odchytit v php ALE hlavne brani cykleni, jinak
# by to odchytil zase znovu RewriteCond %{QUERY_STRING} ^ds=([^&]+)$ kdyby tam zustal jen ds=NECO
RewriteRule ^([^/]+)-download-data-link\.html$ download.php?rw=3&ds=$1 [L,QSA]
Více na: https://www.jakpsatweb.cz/server/mod_rewrite/mod-rewrite-priklady.html
Editace: 15.5.2020 - 12:49
Počet článků v kategorii: 77
Url:php-konverze-diakritiky
AD