Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

Re: [Lug-bg] bash script конвертиране на кирилица към латиница !


  • Subject: Re: [Lug-bg] bash script конвертиране на кирилица към латиница !
  • From: Georgi Chorbadzhiyski <gf@xxxxxxxxxxx>
  • Date: Wed, 06 Apr 2011 12:16:03 +0300
  • Organization: Unix Solutions Ltd. (http://unixsol.org)

Around 04/06/2011 11:47 AM, Ivaylo Toshev scribbled:
> Здравейте,
> 
> Много спешно ми трябва някакъв инструмент, с който мога под bash да
> конвертирам кирилица към латиница. Най-добре поточно, през  | .

#!/usr/bin/env php
<?php
	error_reporting(E_ALL);

	function valid_utf8($input) {
		return @iconv("UTF-8", "UTF-8", $input) == $input;
	}

	function cyr_to_lat($data) {
		if (preg_match('/Ж[а-я]/',$data)) { $data = str_replace('Ж','Zh',$data); } else { $data = str_replace('Ж','ZH',$data); }
		if (preg_match('/Ч[а-я]/',$data)) { $data = str_replace('Ч','Ch',$data); } else { $data = str_replace('Ч','CH',$data); }
		if (preg_match('/Ш[а-я]/',$data)) { $data = str_replace('Ш','Sh',$data); } else { $data = str_replace('Ш','SH',$data); }
		if (preg_match('/Щ[а-я]/',$data)) { $data = str_replace('Щ','Sht',$data); } else { $data = str_replace('Щ','SHT',$data); }
		if (preg_match('/Ю[а-я]/',$data)) { $data = str_replace('Ю','Iu',$data); } else { $data = str_replace('Ю','IU',$data); }
		if (preg_match('/Я[а-я]/',$data)) { $data = str_replace('Я','Ia',$data); } else { $data = str_replace('Я','IA',$data); }
		$data = strtr($data,'АБВГДЕЗИЙКЛМНОПРСТУФХЦЪЬЫЭЦ','ABVGDEZIYKLMNOPRSTUFHCAAAAC');

		$data = str_replace('ж','zh',$data);
		$data = str_replace('ч','ch',$data);
		$data = str_replace('ш','sh',$data);
		$data = str_replace('щ','sht',$data);
		$data = str_replace('ю','iu',$data);
		$data = str_replace('я','ja',$data);
		$data = strtr($data,'абвгдезийклмнопрстуфхьъьыэц','abvgdeziyklmnoprstufhcaaaac');
		return $data;
	}

	$f = fopen("php://stdin", "r");
	while ($s = fread($f, 4096)) {
		if (valid_utf8($s))
			print cyr_to_lat(iconv("UTF-8", "Windows-1251", $s));
		else
			print cyr_to_lat($s);
	}
	fclose($f);
?>

Записваш горното като cyr2lat.php

и после ползваш:

echo "Кривата Уфтса, прескочи куцото Куче на Юруш!" | cyr2lat.php

-- 
Georgi Chorbadzhiyski
http://georgi.unixsol.org/
#!/usr/bin/env php
<?php
	error_reporting(E_ALL);

	function valid_utf8($input) {
		return @iconv("UTF-8", "UTF-8", $input) == $input;
	}

	function cyr_to_lat($data) {
		if (preg_match('/Æ[à-ÿ]/',$data)) { $data = str_replace('Æ','Zh',$data); } else { $data = str_replace('Æ','ZH',$data); }
		if (preg_match('/×[à-ÿ]/',$data)) { $data = str_replace('×','Ch',$data); } else { $data = str_replace('×','CH',$data); }
		if (preg_match('/Ø[à-ÿ]/',$data)) { $data = str_replace('Ø','Sh',$data); } else { $data = str_replace('Ø','SH',$data); }
		if (preg_match('/Ù[à-ÿ]/',$data)) { $data = str_replace('Ù','Sht',$data); } else { $data = str_replace('Ù','SHT',$data); }
		if (preg_match('/Þ[à-ÿ]/',$data)) { $data = str_replace('Þ','Iu',$data); } else { $data = str_replace('Þ','IU',$data); }
		if (preg_match('/ß[à-ÿ]/',$data)) { $data = str_replace('ß','Ia',$data); } else { $data = str_replace('ß','IA',$data); }
		$data = strtr($data,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÚÜÛÝÖ','ABVGDEZIYKLMNOPRSTUFHCAAAAC');

		$data = str_replace('æ','zh',$data);
		$data = str_replace('÷','ch',$data);
		$data = str_replace('ø','sh',$data);
		$data = str_replace('ù','sht',$data);
		$data = str_replace('þ','iu',$data);
		$data = str_replace('ÿ','ja',$data);
		$data = strtr($data,'àáâãäåçèéêëìíîïðñòóôõüúüûýö','abvgdeziyklmnoprstufhcaaaac');
		return $data;
	}

	$f = fopen("php://stdin", "r");
	while ($s = fread($f, 4096)) {
		if (valid_utf8($s))
			print cyr_to_lat(iconv("UTF-8", "Windows-1251", $s));
		else
			print cyr_to_lat($s);
	}
	fclose($f);
?>
_______________________________________________
Lug-bg mailing list
Lug-bg@xxxxxxxxxxxxxxxxxx
http://linux-bulgaria.org/mailman/listinfo/lug-bg


 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.