PHP átviteli függvény translit translit ()

Ez elég nehéz megmondani, hogy melyik változat a CNC a legoptimálisabb a keresőmotorok, és ez hogyan befolyásolja jelentősége. Ebben a cikkben, úgy döntöttem, hogy csökken az ügyet, és nyújtunk kész php-funkció átutalja a cirill (orosz) a átírási. Tudom használni a saját projekteket.

PHP átviteli függvény translit translit ()

Az árnyalatok a fordítást translit

De mielőtt be php-kódot a funkciót, tisztáznunk kell néhány dolgot. Először is, a javasolt változat használatán alapul a tömb transzfer strtr () függvény. Így részben megoldotta a problémát a kódolást, hanem egy sor Cirill (orosz) levelek függ a fájl kódolását, ahol a funkció található.

A következő pont kapcsolódik a továbbított funkció húr. Ez a vonal állhat vegyes esetben, tartalmaz HTML-kódot, és ismétlődő terek, stb Nyilvánvaló, átalakítás egy teljes CNC kell előállítani egy további szűrőt sorok és hiányosságok cserélni, ugyanazon a szimbólum „mínusz” (-).

translit () PHP-függvény

Az összes fenti, legalább egyszerűsített formában kerül alkalmazásra az átviteli függvény által használt nekem átírási, itt php-kód:

függvény translit ($ s) $ s = (string) $ s; // átalakítani a string
$ S = strip_tags ($ s); // távolítsa el a HTML-címkék
$ S = str_replace (array ( "\ n", "\ r"), "", $ s); // távolítsa el a kocsi vissza
$ S = preg_replace ( "/ \ s + /", '', $ s); // eltávolítani ismétlődő terek
$ S = trim ($ s); // távolítsa terek elején és végén a vonal
$ S = function_exists ( 'mb_strtolower'). mb_strtolower ($ s). strtolower ($ s); // lefordítani karakterlánc kisbetűs (néha meg kell adnia a locale)
$ S = strtr ($ s, array ( 'a' => 'a', 'b' => 'b', 'a' => 'v', 'g' => 'g', 'd' = > 'd', 'e' => 'e', ​​'g' => 'e', ​​'f' => 'j', 'h' => 'Z', 'és a' => 'i', 'd' => 'y', 'a' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n', 'o' => 'o', 'p' => 'p', 'p' => 'r', 'a' => 's', 't '=>' t', 'y '=>' u',” f '=>' f '' X '=>' h '' i '=>' c '' h '=>' ch '' sh '=>' sh '' u '=>' SHCH '' s'=> 'y', 'e' => 'e', ​​'w' => 'yu', 'I' => 'ya', 'b' => '', 'b' => ''));
$ S = preg_replace ( "/ [^ 0-9A-Z-_] / i", "", $ s); // törölje a húr érvénytelen karaktereket
$ S = str_replace ( "", "-", $ s); // szóközök helyére mínusz
return $ s; // visszatér az eredménnyel
>

rövid átírási

Az átírás folyamat egy súllyal rendelkezik. Cikkemben, abbahagytam a játékos cirill átírás, tehát Orosz beírt szöveg latin betűkkel. A javasolt változata php-funkció, kihegyezett létrehozása által az NC, amelyet általában érzékelhető a keresők a Google és Yandex. Elvileg translit () használom, mint az egyik szűrő funkciócsoportja, amely lehetővé teszi, hogy automatizálják adatfeldolgozás is, de ez egy másik történet.

Nos, és mivel beszélünk az NC, azt is meg kell mondani a teljes fordítás. Nyilvánvaló, hogy a végrehajtás egy ilyen lehetőség a saját nem lenne egyszerű, és ezért helyesebb, hogy egy harmadik fél által nyújtott szolgáltatás, például a Google fordító. Ha érdekli ez a téma, azt ajánlom, hogy megismerjék az én PHP-függvények többnyelvű fordítási GTranslate ().

Ezen én mindent. Köszönöm a figyelmet. Sok szerencsét!

Véleményem szerint ez egy nagyon hibás átírás használni valahol a gyakorlatban nehéz lesz. A „lencse” lesz „obektiv”, anélkül, hogy enyhítik a „B” betű. Normál Transliterator csinálni „ob'ektiv” vagy „Objektiv”

@ Plutov.by: A fenti példa átírási kiélezte CNC és egyik szimbóluma egyetlen idézet nem mondja, hanem okoz további problémákat.

Akkor vigye vissza, hiányzott a CNC, hétfő van :)

@ Plutov.by: elvileg nem logikus, de lehetetlen, hogy fontolja meg az összes lehetőséget, de átírási jellemzően egy CNC. -)

sor
$ S = preg_replace ( "/ \ s + /", '', $ s); // eltávolítani ismétlődő terek
Meg kell tenni után
$ S = preg_replace ( "/ [^ 0-9A-Z-_] / i", "", $ s); // törölje a húr érvénytelen karaktereket

mert eltávolítása után érvénytelen karakterek jelennek meg dupla, tripla, stb szóköz

és általában jó funkció kiderült, tisztítja a törmeléket és a különböző tesz mindent szép! ;-)

Köszönöm szépen. része a kód sokat segített.

Hogyan lehet megjeleníteni az eredményt a változó $ result, vagy valami ilyesmi -?

2Oleg így a függvény egy értéket, azaz, hogy lehet rendelni egy változó ..:

$ Eredmeny = translit (fordítás funkció translit ');

vagy kijelző:

echo translit ( 'fordítási funkció átírási');

Köszönöm a segítséget

Annak érdekében, hogy ne állítsa be a nyelv- strtolower ($ s), adhatunk az egyező sapkák a tömb (), és ezután az alsó registrr

2Aleksey is lehetséges, de ez nagyban növeli a méretét a tömbben.

Tudom írja be ezt a funkciót formájában felvezető, hogy ő vezette egy extra sort translit?

Ezt azért tettem, mert azok CMSok hogy CNC generit.

Azt is hozzá 'UTF-8' a mb_strtolower string ($ s 'UTF-8'). strtolower ($ s 'UTF-8');

Köszönöm. A nagy vonás. Sooo segített!

Érdemes cserélni a „/” a „-”
$ S = preg_replace ( "/ \ //", '-', $ s); // helyett "/" a "-"

Isten áldja meg. Majdnem nem töltenek sok időt.

Kapcsolódó cikkek