Автор Тема: Помогите заменить русские буквы в английском слове на английские и наоборот.  (Прочитано 9692 раз)

Оффлайн magnel

  • Пользователь
  • **
  • Сообщений: 38
    • Просмотр профиля
Столкнулся с проблемой, обнаружил что в названии ванны: Акриловая ванна Alpen Аmur http://www.aquasanremo.ru/index.php?productID=5892

Первая буква в Alpen - русская А
Первая буква в Аmur - русская А
Остальные буквы латинские....

Так как название у меня выводится в тайтл, то это очень плохо, не правильно ранжируется страница, и такого у меня много, боюсь даже лезть в keywords и description..... Руками делать заманаешься, так как на глаз не определишь какая буква в слове....

Нужна массовая проверка и замена Английских букв в Русских словах и Русских букв в Английских словах - через sql или php

Вариант:
UPDATE `SS_products` SET `name` = REPLACE(`name`, 'А', 'A'); - не подходит, так как русская а заменится во всех словах, и русских и английских...

Нарыл вот такой вариант но надо его привести в порядок и подключить к лего

<?PHP

$str = "Пpи такой тonoрной реализации всем aнглийским словаm прийдет кaпут, naverno, а может быть и nеt";

print $str."<br>";

for($i=0;$i<strlen($str);$i++) {

if(preg_match("#[a-zA-Z]#",$str[$i])) {

// Если текущая буква латинская, а следующая русская
if(preg_match("#[а-яА-Я]#",$str[$i+1])) $str[$i] = "я";

} elseif (preg_match("#[а-яА-Я]#",$str[$i])) {

// Если текущая буква русская, а следующая латинская
if(preg_match("#[a-zA-Z]#",$str[$i+1])) $str[$i+1] = "я";

} else {

continue;

}
}

print $str;
?>


У кого-нибудь есть мысли ? Я думаю что не у одного меня такая проблема может всплыть.

Оффлайн magnel

  • Пользователь
  • **
  • Сообщений: 38
    • Просмотр профиля
Еще откопал такой вариант:
<?PHP

// Замена графически похожих латинских букв на русские буквы в русских словах и наоборот
function RusLat ($text)
{
// Соответствие букв русского и латинского алфавита
$abc = array(
"a" => "а",
"A" => "А",
"c" => "с",
"C" => "С",
"e" => "е",
"E" => "Е",
"T" => "Т",
"H" => "Н",
"o" => "о",
"O" => "О",
"p" => "р",
"P" => "Р",
"k" => "к",
"K" => "К",
"x" => "х",
"X" => "Х",
"B" => "В",
"M" => "М",
"b" => "ь",
"r" => "г",
"y" => "у",
"Y" => "У"
);

// Незаменимые русские символы
$russian = "шщфыджэячибю";

// Незаменимые латинские символы
$latin = "qwisdfgjzv";

// Строка с результатом
$result = "";

// Разбиваем текст на слова и работаем с каждым словом
$words = split(" ", $text);
foreach ($words as $word) {
if (!preg_match("#[$latin]+#i", $word)) {
foreach ($abc as $lat => $rus) {
$word = str_replace($lat, $rus, $word);
}
} elseif (!preg_match("#[$russian]+#i", $word)) {
foreach ($abc as $lat => $rus) {
$word = str_replace($rus, $lat, $word);
}
}
$result .= $word." ";
}

return trim($result);

}
?>