- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Столкнулся с такой ситуацией. При копировании текста из web.archive.org в некоторых словах одна или несколько русских букв заменены латинскими с идентичным написанием. Например, p – р, H – Н, c – с.
Возникла задача автоматически лажу в тексте поправить.
Алгоритм
1. Делаем split с соответствующим regex’ом, чтобы вычленить из текста слова, отделив теги, числа и пунктуацию.
2. Для каждого слова считаем количество русских и английских букв в нём.
3. Если количество и русских и английских букв в слове больше нуля, при этом количество английских букв не больше, чем количеств русских – печатаем слово и буквы-шпионы (написанные латиницей). На этом шаге нужен контроль человека. Смотрим, что слова и вправду “кривые” и добавляем в код соответствующие замены.
4. Складываем в ассоциативный массив (в моём случае HashMap) пары “кривое слово” – “правильный аналог”.
5. Бежим по массиву ключей и заменяем в тексте все кривые слова на правильные аналоги.
А как бы вы стали решать такую задачу?
Оригинал: Кодинг: найти буквы-шпионы
ijk, Как много у Вас английских слов на сайте? Если очень много, то вопрос имеет смысл. Если нет - простая замена.
Если нужно именно анализировать - возможны ли ситуации, при которых рус и англ буквы стоят рядом?
Обрабатываем весь файл посимвольно, игнорируя тэги. Можно использовать парсер. Как только нашли англ букву смотрим есть ли русские буквы от начала слова до этого места и от этого места до конца слова. Если есть - меняем англ на рус. Вот и все. Без массивов и прочего.
Как-то вот так ... примерно ... не проверял :)
$replace=array('p'=>'р','H'=>'Н','c'=>'с');
$data=preg_replace('/([А-Яа-я\b])(['.implode(array_keys($replace)).'])([А-Яа-я\b])/e',"'\\1'.\$replace['\\2'].'\\3'");
массив $replace дополняем нужными буквами
ijk, Как много у Вас английских слов на сайте? Если очень много, то вопрос имеет смысл. Если нет - простая замена.
Если нужно именно анализировать - возможны ли ситуации, при которых рус и англ буквы стоят рядом?
Конечно. Например слово "HTMLка". А есть ещё слово "Z-буфер", где вся моя теория падает. Поэтому предпочёл кривые слова просматривать вручную.
Обрабатываем весь файл посимвольно, игнорируя тэги. Можно использовать парсер. Как только нашли англ букву смотрим есть ли русские буквы от начала слова до этого места и от этого места до конца слова. Если есть - меняем англ на рус. Вот и все. Без массивов и прочего.
Как вариант. Но мой, ИМХО, проще.
ijk добавил 25.11.2010 в 21:19
;8056820']Как-то вот так ... примерно ... не проверял :)
$replace=array('p'=>'р','H'=>'Н','c'=>'с');
$data=preg_replace('/([А-Яа-я\b])(['.implode(array_keys($replace)).'])([А-Яа-я\b])/e',"'\\1'.\$replace['\\2'].'\\3'");
массив $replace дополняем нужными буквами
Вариант. Но тут в чем загвоздка - идёт слепая замена. Это раз. Непонятно, какие именно буквы являются шпионами. Это два. Да и не факт, что буква-шпион в слове одна (хотя в моём случае было именно так).
В любом случае спасибо за regex.
Например слово "HTMLка"
Мой вариант не прокатит, хотя можно сделать анализ больших.
"Z-буфер"
Мой вариант сработает.
Как вариант. Но мой, ИМХО, проще.
Вы считаете что вариант с массивами + человек проще чем 3-4 строчки кода?