Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Заменить русские буквы на английские в ссылке (href)
 
 автор: Fix   (22.06.2009 в 01:44)   письмо автору
 
 

Привет!
Никак не могу составить паттерн, чтобы заменить русские буквы на транслит в ссылке.
Есть много строк типа
<tr onMouseOver="this.className='highlight'" onMouseOut="this.className='normal'"><td>ALMERA N16E</td><td>01.02.2000 - 01.11.2006</td><td>1,8 бензиновый</td><td>автомат</td><td>седан</td><td><a href="/ex_files/ALMERA_N16E_01.02.2000-01.11.2006_1,8_бензиновый_автомат_седан.xls">скачать бланк</a></td></tr>

так вот, после href нужно все буквы заменить на транслит... функция транслита у меня уже есть, но никак не могу её прикрутить к рег. выражению!
Функция транслита:

<?php
function encodestring($st)
  {
    
$st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ",
    
"abvgdeeziyklmnoprstufh'iei");
    
$st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ",
    
"ABVGDEEZIYKLMNOPRSTUFH'IEI");
    
$st=strtr($st,
                    array(
                        
"ж"=>"zh""ц"=>"ts""ч"=>"ch""ш"=>"sh",
                        
"щ"=>"shch","ь"=>"""ю"=>"yu""я"=>"ya",
                        
"Ж"=>"ZH""Ц"=>"TS""Ч"=>"CH""Ш"=>"SH",
                        
"Щ"=>"SHCH","Ь"=>"""Ю"=>"YU""Я"=>"YA",
                        
"ї"=>"i""Ї"=>"Yi""є"=>"ie""Є"=>"Ye"
                        
)
             );
    return 
$st;
  }
?>


Пробовал использовать preg_replace, preg_replace_callback...

----------
Вопрос решен :)
После долгих мучений все-таки удалось сделать транслит. Вот решение, которое работает:

<?php
preg_match
("#<a.*?href=\"(.+?)\".*?>.+</a>#is",$page[$p],$out);
unset(
$out[0]);
$href encodestring($out[1]);
$newname preg_replace("#<a.*?href=\"(.+?)\".*?>(.+?)</a>#is","<a href=\"".$href."\">$2</a>",$page[$p]);
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования