|
|
|
| Привет!
Никак не могу составить паттерн, чтобы заменить русские буквы на транслит в ссылке.
Есть много строк типа
<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]);
?>
|
| |
|
|