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.
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