|
[ 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... ;-)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|