Zdravím, potřebuji funkci která z jakéhokoliv řetězce odstraní všechny znaky typu /\{@)#... dále pak všechna diaktrická písmena převede na bez diaktriky, odstraní mezery a velká písmena převede na malá. Vstupem tedy může být cokoliv, výstupem pouze znaky a-z. Řešil bych to nejspíš forem a IFem či funkcí preg_match(). Nebo je dostupná již kompletní funkce?
Fórum › PHP
řetězec - odstranění nečitelných znaků
#1 Pavelv
Zkus tohle:
<?php
setlocale(LC_CTYPE, 'cs_CZ');
$str = "Příšerný skřivan tvrdí, že 5×4=42. Je to vůl.";
$sanit = preg_replace('/[^a-z]/', '',
iconv('UTF-8', 'ASCII//TRANSLIT', mb_strtolower($str, 'UTF-8')));
echo $sanit;jj, tam je treba mit nebo nastavit spravne znakove sady pro vstup-vystup.
- soubor utf
- text utf
- header utf (http://php.vrana.cz/…ni-znaku.php)
- a tez tusim mb_internal_encoding('UTF-8') (mb_detect_order)Pokud mas tedy nektere z nich jine, tak jej musis nastavit na takove, jake mas. Nemuzes ocekavat, ze ti win-1250 dokaze zobrazit nebo zpracovat spravne utf text a pod.
#6 Kit
Je to možné, ale nejradši bych si vytvořil funkci nezávislo na jazykové sadě. Něco univerzálnějšího. Zkoušel jsem to přes switch, ale tomu se nelíbí písmena v parametrech:
$old = 'Všelijaké znaky, text_a čísla#23432'; $old = strtolower($old) $new = ''; for($i=0;$i<strlen($old);$i++){ switch($old[$i]){ case 'ě': case 'Ě': $new .= 'e'; break; case 'š': case 'Š': $new .= 's'; break; ... case 'a': case 'b': case 'c': ... $new .= $old[$i]break; } }
Na php.net pro funkc str_replace bys nasel v komentarich od uzivatelu funkce vyuzivajici cisla znaku jestli ti nevyhovuji znaky. (v tech prikladech je to trosku na pikacu, protoze str_replace umi pracovat s array a neni treba pro kazdy znak spoustet extra str_replace) Lepsi je pouzit ale mb_ funkce.
chr(153) nebo "\x9d"
Znaky s diakritikou musi mit spravne nastavene kodovani v souboru. V default 8-bit kodovani ma jina kodova sada pro stejne cislo jiny znak. Obavam se, ze tva univerzalnost bez prepnuti kodove sady znaku asi nepujde.
Zjistit počet nových příspěvků
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa































Uživatelé prohlížející si toto vlákno
Podobná vlákna
Odstranění znaků z pole — založil Sprinter
Odstranění bílých znaků+javascript a get, post — založil Fonadius
Ako na vyhladanie znaku/znakovresp.slov v nejakom value? + Ako na ma… — založil Lordest
Moderátoři diskuze
TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Stálý člen

Nahlásit jako SPAM
IP: 212.79.110.–
Guru

