Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja explode - dzielenie wyrazów na litery
Forum PHP.pl > Forum > PHP
cipronex
Natrafiłem na coś w rodzaju ograniczenia w myśleniu programistycznym. Zastanawiam się nad tym, jak rozwiązać problem transliterowania znaków łacińskich na cyrylicę, przy zachowaniu nieco odmienny zasad, niż te które rządzą np. grażdżanką.

Ad rem. Chodzi mi o to, by przykładowo ciąg znaków:

Ala ma kota. Ania nie ma kota. Ania ma ciągutki.

Transliterowało na:

Ала ма кота. Аня нэ ма кота. Аня ма цёнгутки.

Nie jest możliwe uzyskanie tego efektu używając do tego skryptów dostępnych w internecie, bo one rządzą się swoimi prawami transliteracji.

Zakładając, że z problemem transliteracji literka po literce się uporam pozostają newralgiczne sytuacje, gdy np. chciałbym transliterować zbitkę "ią" na "ён" a nie "иа", bądź "иą".

Byłbym wdzięczny za odesłanie do jakiejkolwiek literatury. Mogłaby to nawet być książka sprzed wynalezienia telefonu z wyrwaną połową stron, bo ja nie jestem w stanie wyobrazić sobie tego technicznie w żaden sposób.
yevaud
o ile dobrze zrozumialem sa 2 problemy

1. zamiana literka po literce
latwa sprawa, robisz petle po kolejnych znakach i podmieniasz
  1. $slownik = array(); // tutaj wrzucasz odpowiednie literki
  2. for ($i = 0; $i < strlen($zdanie); $i++)
  3. $zdanie[$i] = $slownik[$zdanie[$i]];


2. problem zbitek znakow
mozesz to zalatwic na bardzo wiele sposobow, kilka z nich:
a) szukaj/zamien pary
cool.gif wyrazenia regularne
c) najbardziej sensowne moim zdaniem, ale wymaga troche pracy - napisac automat komorkowy
cipronex
Co to jest automat komórkowy?
greycoffey
Chyba chodziło o automat skończony, wg. mnie najlepiej będzie napisać wyrażenia regularne np.
  1. <?php
  2. $co = array('k', 'ng');
  3. $zastap = array('ĸ', 'Nygy');
  4. $tekst = 'ng kabanosng';
  5. echo preg_replace($co, $zastap, $tekst);
  6. ?>
cipronex
Nadal niewiele z tego rozumiem.
yevaud
tak, chodzilo mi o automat skonczony smile.gif komorkowy to troche inna sprawa
cipronex
Co się tyczy tego fragmentu.

Kod
$slownik = array(); // tutaj wrzucasz odpowiednie literki
for ($i = 0; $i < strlen($zdanie); $i++)
$zdanie[$i] = $slownik[$zdanie[$i]];


Do czego służy array? Jak mam tego użyć?
yevaud
array
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.