[ goropad @ 29.03.2016. 10:41 ] @
Code:


<?php
$string = 'Njegova škola.';
$patterns = array();
$patterns[0] = '/Nj/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[2] = 'nj';
$replacements[1] = 'black';
$replacements[0] = 'slow';
echo preg_replace($patterns, $replacements, $string);
?>



Radim preslovljavanje sa latinice na ćirilicu, sto je malo teze nego obrnuto.

Pa kako nj da zamenim sa ćirilicnim nj i slicno?

////

Resio sam bas tako..

[Ovu poruku je menjao goropad dana 29.03.2016. u 11:57 GMT+1]
[ jablan @ 29.03.2016. 12:02 ] @
Ne možeš. Pošto latinično "nj" nije uvek jedno slovo. U nekim slučajevima (injekcija, konjugacija itd) su to dva slova (n+j). Zato preslovljavanje iz latinice u ćirilicu teoretski nije moguće.
[ VladaSu @ 29.03.2016. 13:20 ] @
Mozes. Latinicno nj je najcesce jedno slovo ako u obziru uzmes izuzetke.
1. Rec pocinje za injek i tanjug su dva slova n i j
2. Reci duze od 6 slova a pocinju sa konju su dva slova n i j

I imas problem za dz a to su reci koji pocinju sa nadzi.

Ako i dalje nisi siguran prilikom preslovljavanja mozes da ispises reci iz teksta oko kojih imas nedoumice i da ih manualno preslovis.
[ plus_minus @ 29.03.2016. 13:37 ] @
@goropad

Uvek gledaj da za zamenu stringa koristiš str_replace(). Tek ako zaista ne može onda se hvataj preg_* funkcija.
Nesposobnije jeste, ali, brže i manji je performace cost sa str_replace.

Ovo treba da radi.
Code (php):


<?php

function doMain_cySR($text, $bID)
{
     $arrLA=[
          'A','B','V','W','Y','G','Đ','DŽ','Dž','D','Ž','E','Z','NJ','Nj','LJ','Lj',
          'I','J','K','L','M','N','O','P','R','S','T','Ć','U','F','H','C','Č','Š',
          'a','b','v','w','y','g','đ','dž','d','ž','e','z','nj','lj',
          'i','j','k','l','m','n','o','p','r','s','t','ć','u','f','h','c','č','š'
     ];

     $arrCY=[
          'A','B','V','V','Y','G','Đ','Dž','Dž','D','Ž','E','Z','Nj','Nj','Lj','Lj',
          'I','J','K','L','M','N','O','P','R','S','T','Ć','U','F','H','C','Č','Š',
          'a','b','v','v','y','g','đ','dž','d','ž','e','z','nj','lj',
          'i','j','k','l','m','n','o','p','r','s','t','ć','u','f','h','c','č','š'
     ];

     $a_La=str_replace($arrCY, $arrLA, $text);
     $a_Sr=str_replace($arrLA, $arrCY, $text);
     return(($bID=='la') ? $a_La : $a_Sr);
}

function vice_versa_cySR()
{
     $args=func_get_args();
     $text=$args[0]; $bID=$args[1];
     $output=doMain_cySR($text, $bID);
     return str_replace
     (
          ['DŽ', 'Dž', 'dž'],
          ['Dž', 'Dž', 'dž'], $output
     );
}

 


PS: Zbog automatske konverzije na ES-u, evo kako treba da izgleda drugi niz sa ćiriličnim slovima.



I u drugoj funkciji mali Dž zvrk.



-----
Pozivanje,

Code (php):


// ako hoćeš iz latinice u ćirilicu :
echo(vice_versa_cySR($njegova_skola_latinicom_ispisano, 'cy'));

// ako hoćeš iz ćirlice u latinicu :
echo(vice_versa_cySR($njegova_skola_cirilicom_ispisano, 'la'));
 


@jablan

Ako nešto neće u Ruby, a ti se lepo prešaltaš u PHP gde hoće. ;)
Naravno, ako je neko pisao taj ćirlični/latinični tekst nogama ili `sa šivaću mašinu`, nema tog konvertora koji će da uspe..


[Ovu poruku je menjao plus_minus dana 29.03.2016. u 14:50 GMT+1]
[ VladaSu @ 29.03.2016. 13:46 ] @
Plus_minus problem su reci kao injekcija gde se cita kao
i n j e k c i j a
a ne kao
i nj e k c i j a
[ plus_minus @ 29.03.2016. 13:52 ] @
Pa, ni to ne mora da bude problem. Nađu se sve reči koje su kao ta (jer ih nema više od 20) i dodatno se obrade.
[ VladaSu @ 29.03.2016. 14:07 ] @
Pa dao sam odgovor na to pa daj coveku kod :) salim se
[ goropad @ 29.03.2016. 14:12 ] @
Uradio sam kod. radi posao. Inace, ne znam jel ima neke reci gde nj nije jedno slovo ili dž dž je uvek džak jedno slovo, a ako nalete ti slucajevi, obradicu i njih kao izuzetke evo ga kod:

Code:

<?php
function preslovi($fraza) {
$cirilica = array (
  "A",
  "B",
  "V",
  "G",
  "D",
  "Đ",
  "E",
  "Ž",
  "Z",
  "I",
  "J",
  "K",
  "L",
  "Lj",
  "M",
  "N",
  "Nj",
  "O",
  "P",
  "R",
  "S",
  "Š",
  "T",
  "Ć",
  "U",
  "F",
  "H",
  "C",
  "Č",
  "Dž",
  "Š",
  "a",
  "b",
  "v",
  "g",
  "d",
  "đ",
  "e",
  "ž",
  "z",
  "i",
  "j",
  "k",
  "l",
  "lj",
  "m",
  "n",
  "nj",
  "o",
  "p",
  "r",
  "s",
  "š",
  "t",
  "ć",
  "u",
  "f",
  "h",
  "c",
  "č",
  "dž",
  "š",
);
$latinica = array (
"A",
"B",
"V",
"G",
"D",
"Đ",
"E",
"Ž",
"Z",
"I",
"J",
"K",
"L",
"Lj",
"M",
"N",
"Nj",
"O",
"P",
"R",
"S",
"Š",
"T",
"Ć",
"U",
"F",
"H",
"C",
"Č",
"Dž",
"Š",
"a",
"b",
"v",
"g",
"d",
"đ",
"e",
"ž",
"z",
"i",
"j",
"k",
"l",
"lj",
"m",
"n",
"nj",
"o",
"p",
"r",
"s",
"š",
"t",
"ć",
"u",
"f",
"h",
"c",
"č",
"dž",
"š",
);
$fraza = str_replace($latinica, $cirilica, $fraza);

$string = $fraza;

$patterns = array(); // ćirilična slova
$patterns[0] = '/Nj/';
$patterns[1] = '/nj/';
$patterns[2] = '/Lj/';
$patterns[3] = '/lj/';
$patterns[4] = '/Dž/';
$patterns[5] = '/dž/';

$replacements = array();
$replacements[0] = 'Nj';
$replacements[1] = 'nj';
$replacements[2] = 'Lj';
$replacements[3] = 'lj';
$replacements[4] = 'Dž';
$replacements[5] = 'dž';

$fraza = preg_replace($patterns, $replacements, $string);
  return $fraza;
}


naravno pametni esesesovci su ukinuli cirilicu sto je van svake pameti.
[ valjan @ 29.03.2016. 14:37 ] @
Jedan od primera gde d+ž nije dž - nadživeti...
[ plus_minus @ 29.03.2016. 14:44 ] @
Džak, odžak, džuklja, džumla, džibra, džeparoš .. nije problem kada reč počinje sa `dž`, problem je kada se dž nalazi negde između...
Preuzetih stranih reči ~injection~ u ovom slučaju, nema mnogo. I ne treba uzimati u obzir komplet reč, već samo deo, to jest, početak. I za to bih ja pre substr_replace nego preg*..
[ VladaSu @ 29.03.2016. 14:47 ] @
Ja napisah pravila, ponovicu.

1. Rec pocinje za injek i tanjug su dva slova n i j
2. Reci duze od 6 slova a pocinju sa konju su dva slova n i j

3. I imas problem za dz a to su reci koji pocinju sa nadzi.
[ goropad @ 29.03.2016. 14:53 ] @
hvala svima na trudu. Ali ova funkcija mi je trebala i treba mi jos uek samo za preslovljavanje naslova ne celog sadrzaja, tako da cu da pazim. U stvari ne naslova nego imena fajlova. Fajlovi su na latinici a ja ih prikazujem na cirilici.

Ali posto ceo sajt pisem direktno na cirilici, nije problem sa malom funkcijom da to preslovim u latinicu. Ali to jos nisam poceo da radim.

[ djoka_l @ 29.03.2016. 15:04 ] @
U tvom programu nije rešen problem velikih slova Lj, Nj i Dž.
Iako je uobičajeno da se ova slova pišu sa prvim velikim, a drugim malim, u slučajevima kada su u pitanju, na primer naslovi, javljaju se i kombinacije sa oba velika slova:

PETAR PETROVIĆ NJEGOŠ
GORSKI VIJENAC

dž nema jedini problem u nadživeti. Svaka reč koja je složenica od pred, pod, nad može da ima ž posle toga koje ne treba konvertovati u dž.
[ jablan @ 29.03.2016. 15:16 ] @
[ VladaSu @ 29.03.2016. 15:19 ] @
da, predzeludac..
[ jablan @ 29.03.2016. 15:30 ] @
Plus što je jezik živa stvar i menja se. Isto kao što mi informatičari na svoju ruku možemo da iz stranog jezika u srpski "importujemo interfejs" i da "apdejtujemo drajver", tako i neki doktor/pravnik/muzičar/filozof može da "odživi", "leči podželudac", "anjonizuje" itd. Zato sam napisao da je to, teoretski, nerešiv problem. Naravno da možeš da kažeš "99% mi vrši posao", samo treba imati u vidu da je ćirilica superiornija od latinice, barem što se jednoznačnosti pisanja srpskog jezika tiče i da konverzija ćirilica -> latinica nije problem, dok obrnuto jeste. :)
[ plus_minus @ 29.03.2016. 15:47 ] @
Citat:
goropad:
naravno pametni esesesovci su ukinuli cirilicu sto je van svake pameti.


To i ja kažem. Url uvek može (i tako treba i da ostane) da bude u formi `ošišane latinice`, ali, totalno ubijanje ćirilice, svega što nije latinica, tamo gde nema potrebe za url encoding/decoding itd.. ... to se može nazvati i kriminalom.

Sve u svemu, jedna slika, hiljadu reči.



Znate li kako se zove osoba koja drži pravopis? I ne, nije PS obrađeno.
[ jablan @ 29.03.2016. 15:59 ] @
Ala je propala Ivana Žigon...
[ goropad @ 29.03.2016. 16:15 ] @
Sad sam se napalio da tražim primere koji nisu obradjeni i da svaki uvrstim u skup. Da i ovo sto kaze @djoka_l to nisam predvideo, ubaciću.
[ djoka_l @ 29.03.2016. 16:21 ] @
Citat:
2. Reci duze od 6 slova a pocinju sa konju su dva slova n i j


konjušar, konjušnica
[ VladaSu @ 29.03.2016. 16:43 ] @
@djoka_l Nice. Mozda nam i podje za rukom da napravimo dobar program za preslovljavanje... Koliko vidim ni oogle translate nije delimicino pokrio ove probleme.
[ goropad @ 29.03.2016. 16:43 ] @
pa nije kon - pa konjusnica- nego konj - konjusnica

mozda konjuktivitis.
[ valjan @ 29.03.2016. 20:33 ] @
Ne zaboravi i na klasičan problem da mnogi đ pišu kao dj, pa kad naletiš na podjednako, nadjačavati, podje*avati, predjelo, eto tebi radosti na ćirilici... ;-)