Последнее время многим отечественным компаниям не хватает русскоязычного рынка и очевидным решением является расширение на европейские просторы. Но почему-то к русским товарам и услугам англоязычные граждане относятся предвзято. Поэтому не редко, для улучшения продаж, организации представляются европейскими. И зачастую одним из инструментов продаж служит сайт, который должен быть на английском языке. А поскольку европейская версия сайта, почти всегда, это копия русского, то нужно максимально качественно перевести ее на иностранный язык. И мало того, что перевод должен быть качественным, еще нужно эти переводы аккуратно добавить на сайт. И тут начинается самое интересное: где-то на страницах остаются русские строчки, в js или html остаются русские комментарии, в alt-ах к картинкам и ссылкам остаются русские подписи и прочие мелочи, которые выдают русский след. С такой проблемой уже несколько раз приходилось сталкиваться, довольно сложно все проверить и протестировать. Поэтому, когда пришел очередной клиент с подобной проблемой, было решено упростить и ускорить работу тестировщика — написать небольшой скрипт, который автоматически будет сканировать страницу на наличие русских символов и слов.
Поиск кириллических символов на странице с помощью php
Поскольку основным языком, с которым я работаю – это php, то и поиск было решено писать на нем. По сути, задача очень простая: получить html-код страницы или js-скрипта и проверить весь текст на вхождение русских символов. В данном случае, для поиска идеально подходят регулярные выражения, вот только составить нужное, это всегда для меня головная боль. И этот случай не исключение – провозиться пришлось несколько часов. Основная сложность заключалась в том, что регистронезависимый поиск с помощью регулярки просто так не работает с русскими символами. Чтобы научить регулярку искать нужные символы как в нижнем, так и верхнем регистре, нужно использовать модификатор «u», он позволяет работать с текстом в кодировке UTF-8. А также потребуется второй модификатор – «i», он отвечает за регистронезависимый поиск. Вся регулярка будет выглядеть вот так:
/([а-я]+)/ui
Такое регулярное выражение позволяет найти символы и целые слова, состоящие из русских символов в любом регистре.
Поиск русских слов в тексте с помощью php
Регулярка составлена, теперь дело техники. Остается только написать несколько строк кода, они приведены чуть ниже. Чтобы было понятнее, в коде добавлены комментарии:
// страница, на которой будем искать кириллицу
$url = "http://php.net/manual/ru/function.preg-match-all.php";
// получаем html-код страницы
$page_html = @file_get_contents($url);
// если удалось получить страницу
if($page_html){
$pattern = '/([а-я]+)/ui';
// находим все русские слова
preg_match_all($pattern, $page_html, $matches);
// если что-то нашлось
if(!empty($matches)){
// выводим по одному слову
foreach($matches[0] as $word){
echo $word . "<br>";
}
}
}
Послесловие
Для более удобного поиска и работы со скриптом, можно добавить небольшую форму с полем для ввода одного или нескольких адресов страниц. Должно получиться что-то подобное:
<form action="#" method="post"> <textarea name="urls"></textarea> <br> <input type="submit" value="find"> </form>
И сам код нужно будет немного дополнить:
// если была отправлена форма
if($_POST["urls"]){
// получаем все адреса страниц, разделенные переносом строки
$array_urls = explode("\n", $_POST["urls"]);
foreach($array_urls as $url){
$url = trim($url); // уберем лишние пробелы
// получаем html-код страницы
$page_html = @file_get_contents($url);
// если удалось получить страницу
if($page_html){
$pattern = '/([а-я]+)/ui';
// находим все русские слова
preg_match_all($pattern, $page_html, $matches);
// если что-то нашлось
if(!empty($matches)){
// выводим по одному слову
foreach($matches[0] as $word){
echo $word . "<br>";
}
}
}
}
}


(7 оценок, среднее: 3,29 из 5)