Autor | Zpráva | ||
---|---|---|---|
Ladinek Profil * |
#1 · Zasláno: 25. 10. 2014, 00:39:54
Na internetu jsem nalezl script, který odstraňuje samohlásky přímo z textu. Bohužel odstraňuje to naprosto všude. Potřebuji, aby se samohlásky odstraňovali pouze na konci daných slov.
$yourString = "File Name Of Hello"; $vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U", " "); $yourString = str_replace($vowels, "", $yourString); echo $yourString; //FlNmfHll |
||
Alphard Profil |
#2 · Zasláno: 25. 10. 2014, 01:02:10
Ladinek:
Nejsi náhodou PetraPP? Ten script je třeba rozšířit. Takhle hledá jednotlivé znaky, kdyby se např. hledalo 'a ', 'e ', ... (zdůrazňuji mezeru za každou samohláskou), a nahrazovalo se za mezeru, byl by problém vyřešen pro slova následovaná mezerou.
Když si uvědomíme, že ve větě jsou slova následována interpunkčními znaménky, vede nás to k použití regulárních výrazů, kde místo mezery dáme celý výčet znaků (pozor na ošetření posledního slova). A na závěr dáme i samotné samohlásky jako výčet, aby se nahradilo i více samohlásek za sebou. Jiný přístup, a myslím že lépe škálovatelný, by bylo rozdělit vstupní text na jednotlivá slova podle mezery (a případně dalších znaků), získat pole vstupních slov a ta samostatně ořezávat. |
||
mimochodec Profil |
Alphard:
Já myslím, že "pouze na konci daných slov" celé zadání poněkud zjednodušuje. Jen nevím, jestli má php nějakou funkci, které by se dal zadat text a dvě pole a chtít po ní, aby nahradila položky z jednoho pole vždy patřičnou položkou druhého. Pokud taková funkce není, je to otázka jednoho cyklu. |
||
Alphard Profil |
#4 · Zasláno: 25. 10. 2014, 02:38:37
mimochodec:
„Jen nevím, jestli má php nějakou funkci, které by se dal zadat text a dvě pole a chtít po ní, aby nahradila položky z jednoho pole vždy patřičnou položkou druhého.“ Umí to zde použitý str_replace(). Případně strtr() bere asociativní pole. |
||
Tomáš3 Profil * |
#5 · Zasláno: 26. 10. 2014, 22:33:48
Půjčil jsem si popis řešení od [#2] Alphard a tady je ten regulár ;)
<?php mb_internal_encoding('utf-8'); //support utf8 chars in regulars (áéíóúů) $text = 'File Name Of Hello. File Name Of Hello? File Name Of Hellooo'; $result = preg_replace('/[aeiouáéíóúů]+([\ \n.,?!:]|$)/ui', '$1', $text); var_dump($result); // string(49) "Fil Nam Of Hell. Fil Nam Of Hell? Fil Nam Of Hell" |
||
Časová prodleva: 10 let
|
0