Autor Zpráva
Stehlik
Profil *
zdravím, jak se zbavit speciálních znaků...

používám str_replace ale seznam znaků začíná být ošklivě dlouhý :(
_es
Profil
Stehlik:
jak se zbavit speciálních znaků
„Špeciálne“ znamená konkrétne čo?
Stehlik
Profil *
ϖ • … ′ ″ ‾ ⁄ ℘
ℑ ℜ ™ ℵ ← ↑ → ↓ ↔ ∏ ∑ √ ∞ ∫ ∩
≈ ≠ ≡ ≤ ≥ ◊ ♠ ♣ ♥ ♦

je jich obrovské množství...
Rfilip
Profil
odkud ty znaky pocházejí?
Joker
Profil
Stehlik:
Jestli je zakázané všechno kromě nějaké množiny povolených znaků, bylo by lepší na to jít přes nahrazení všeho, co není v té množině.
Šlo by to udělat přes regulární výraz.
Stehlik
Profil *
jak na to?
chtěl bych tyto znaky pouze vypustit :D ale text aby zůstal :)
Jan Tvrdík
Profil
Stehlik:
Takhle třeba odstraníš všechny nealfanumerické znaky:
$s = preg_replace('#[^a-z0-9]+#i', '', $s);
_es
Profil
Stehlik:
je jich obrovské množství...
No a ich definícia je aká?
Písmeno z azbuky je „špeciálny znak? A čo písmeno z gréckej abecedy? Nemecké písmeno ß? České písmeno s diakritikou?

text aby zůstal
A ako definuješ „text“?
Stehlik
Profil *
Jan Tvrdík:
akhle třeba odstraníš všechny nealfanumerické znaky:
>
$s = preg_replace('#[^a-z0-9]+#i', '', $s);

a jak do toho dostanu diakritiku, čárku, pomlčku, dvojtečku a závorky?
děkuji
_es
Profil
Stehlik:
a jak do toho dostanu diakritiku, čárku, pomlčku, dvojtečku a závorky?
A ako máme vedieť, čo všetko ty považuješ za „špeciálne“ znaky?
Stehlik
Profil *
_es:
A ako máme vedieť, čo všetko ty považuješ za ‚špeciálne‘ znaky?
promiň ale čárka, dvojtečka a pomlčka se v češtině běžně používají a závorku bych "oželil" ale jelikož se používá i na smajlíky rád bych je měl zahrnuty...
_es
Profil
Stehlik:
No tak si do toho regulárneho výrazu doplň všetky znaky, ktoré ty nepovažuješ za „špeciálne“. Asi ti ťažko niekto poradí presne, keď ani nie si schopný definovať tú „špeciálnosť“, či „text“ v tvojom ponímaní.
Stehlik
Profil *
kdybych to uměl už zde nepíšu ...
ale jak z toho vyrvat fiakritiku fakt netuším :(
Jan Tvrdík
Profil
Stehlik:
Co všechno považuješ za znaky s diakritikou?
Stehlik
Profil *
ěščřžýáíéůúďť a to samé ve velkých...?
Jan Tvrdík
Profil
$s = preg_replace('#[^a-z0-9ěščřžýáíéůúďťĚŠČŘŽÝÁÍÉŮÚĎŤ,.:()-]+#i', '', $s);
Majkl578
Profil
[#16] Jan Tvrdík:
Chybí tam modifikátor u (regulár obsahuje unicode znaky). Pak by se ještě hodilo přidat vykřičník, otazník, chybějící české znaky (ó, ž atd.) a další, i méně používané (třeba pomlčku).
Jan Tvrdík
Profil
Majkl578:
Chybí tam modifikátor u (regulár obsahuje unicode znaky)
Regulár neobsahuje žádné znaky, které nejsou obsaženy ve windows-1250.
Majkl578
Profil
[#18] Jan Tvrdík:
Zkus si například toto:
$s = 'žluťoučký /ůň :)';
$s = preg_replace('#[^a-z0-9ěščřžýáíéůúďťĚŠČŘŽÝÁÍÉŮÚĎŤ,.:()-]+#i', '', $s);
echo $s;

A následně přidej modifikátor u.

Výstup bude odlišný. V prvním případě:
Žluťoučkýků�:) (UTF-8 ň je nepovolené, je ze znaků 197 a 136 desítkově, ale absencí modifikátoru u se nepovažuje za UTF-8 znak, ale za dva znaky; 136 tedy vypadne, ale tento zbylý znak má ASCII 197, tato hodnota byla totiž povolena např. znakem Ť (197 a 164 desítkově))
v druhém:
Žluťoučkýků:)
Jan Tvrdík
Profil
Majkl578:
Při nepoužití modifikátoru u samozřejmě předpokládám, že soubor nebude uložen jako utf-8, ale jako windows-1250. Pokud bude skript uložen v kódování utf-8, tak je pochopitelně modifikátor u nezbytný.

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: