[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа со строками
gorillaz
Подскажите пожалуйста как сделать вот это:
$str="Петров К.Г., Васильев П.К., Генадьев А.В., ......"
$srt1="petrovkg"
$srt2="vasilevpk"
$srt3="genadevav"
......

Заранее благодарю.



Спустя 1 час, 42 минуты, 26 секунд (13.05.2010 - 11:50) Kuzya написал(а):
Бьём имена не на строки, а на массив функцией explode по запятой. Прогоняем весь массив с помощью array_map через эту функцию:

    function translit($str)
{

$upper = Array(
'#А#','#Б#','#В#','#Г#','#Д#',
'#Е#','#Ё#','#Ж#','#З#','#И#',
'#Й#','#К#','#Л#','#М#','#Н#',
'#О#','#П#','#Р#','#С#','#Т#',
'#У#','#Ф#','#Х#','#Ц#','#Ч#',
'#Ш#','#Щ#','#Ъ#','#Ы#','#Ь#',
'#Э#','#Ю#','#Я#');

$lower = Array(
'а','б','в','г','д',
'е','ё','ж','з','и',
'й','к','л','м','н',
'о','п','р','с','т',
'у','ф','х','ц','ч',
'ш','щ','ъ','ы','ь',
'э','ю','я');

$str = preg_replace($upper,$lower,$str);

$from = Array(
'#а#','#б#','#в#','#г#','#д#',
'#е#','#ё#','#ж#','#з#','#и#',
'#й#','#к#','#л#','#м#','#н#',
'#о#','#п#','#р#','#с#','#т#',
'#у#','#ф#','#х#','#ц#','#ч#',
'#ш#','#щ#','#ъ#','#ы#','#ь#',
'#э#','#ю#','#я#');

$to = Array(
"a", "b", "v", "g", "d",
"e", "yo", "zh", "z", "i",
"j", "k", "l", "m", "n",
"o", "p", "r", "s", "t",
"u", "f", "h", "c", "ch",
"sh", "sh", "", "y", "",
"je", "ju", "ja");

$str = preg_replace($from,$to,$str);

$str = str_replace(' ','_',$str);
$str = str_replace('+','_',$str);
$str = str_replace('-','_',$str);

$str = preg_replace('#[^0-9a-z_]#mi','',$str);

$str = trim($str);

if(!$str) $str = '_';

return $str;
}


P.S. Может быть функцию придётся немного подкорректировать, зависит от ситуации

Спустя 35 минут, 41 секунда (13.05.2010 - 12:26) jetistyum написал(а):
а зачем простые буквы заменять регулярным выражением??????

Спустя 18 минут, 36 секунд (13.05.2010 - 12:45) Kuzya написал(а):
Каюсь. В то время когда это писал, не знал ещё что str_replace работат с массивами rolleyes.gif

Спустя 4 минуты, 27 секунд (13.05.2010 - 12:49) jetistyum написал(а):
Ладно, прощаю! smile.gif набирайся опыта! smile.gif а регулярки только для сложных поисков или замен... не нужно из пушки по воробьям ...

Спустя 10 минут, 46 секунд (13.05.2010 - 13:00) gorillaz написал(а):
Не работате... sad.gif

Спустя 4 минуты, 9 секунд (13.05.2010 - 13:04) Kuzya написал(а):
Может хотя бы пример своего кода выложешь? smile.gif

Спустя 4 дня, 5 часов, 37 минут, 41 секунда (17.05.2010 - 18:42) gorillaz написал(а):
$str = explode(", ", $author);
function translit($str)
{

$upper = Array(
'#А#','#Б#','#В#','#Г#','#Д#',
'#Е#','#Ё#','#Ж#','#З#','#И#',
'#Й#','#К#','#Л#','#М#','#Н#',
'#О#','#П#','#Р#','#С#','#Т#',
'#У#','#Ф#','#Х#','#Ц#','#Ч#',
'#Ш#','#Щ#','#Ъ#','#Ы#','#Ь#',
'#Э#','#Ю#','#Я#');

$lower = Array(
'а','б','в','г','д',
'е','ё','ж','з','и',
'й','к','л','м','н',
'о','п','р','с','т',
'у','ф','х','ц','ч',
'ш','щ','ъ','ы','ь',
'э','ю','я');

$str = preg_replace($upper,$lower,$str);

$from = Array(
'#а#','#б#','#в#','#г#','#д#',
'#е#','#ё#','#ж#','#з#','#и#',
'#й#','#к#','#л#','#м#','#н#',
'#о#','#п#','#р#','#с#','#т#',
'#у#','#ф#','#х#','#ц#','#ч#',
'#ш#','#щ#','#ъ#','#ы#','#ь#',
'#э#','#ю#','#я#');

$to = Array(
"a", "b", "v", "g", "d",
"e", "yo", "zh", "z", "i",
"j", "k", "l", "m", "n",
"o", "p", "r", "s", "t",
"u", "f", "h", "c", "ch",
"sh", "sh", "", "y", "",
"je", "ju", "ja");

$str = preg_replace($from,$to,$str);

$str = str_replace(' ','_',$str);
$str = str_replace('.','',$str);

$str = preg_replace('#[^0-9a-z_]#mi','',$str);

}
echo $r=count($str);
$t=$r-1;
$a = range(0,$t);
$b = array_map("translit", $a);
echo $b;

Спустя 3 часа, 53 минуты, 17 секунд (17.05.2010 - 22:35) gorillaz написал(а):
Вопрос закрыт! Обошел другим путем!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.