1.На входе есть строка(Строка для примера, она может быть очень большая):
49 0 0 wiki.nashtransport.ru wiki.nashtransport.ru/ 27184 23232 mignews.ru mignews.ru/27182 67 сергиев-посад.рф тут еще какая-то инфа. domen.ru тут куча текста
Т.е. На выходе должно получиться следующее:
wiki.nashtransport.ru
mignews.ru
сергиев-посад.рф
domen.ru
Как реализовать подобное?
Изначально имеем текст:
$text = '49 0 0 wiki.nashtransport.ru wiki.nashtransport.ru/ 27184 23232 mignews.ru
mignews.ru/27182 67 сергиев-посад.рф тут еще какая-то инфа. domen.ru тут куча текста';
Воспользуемся следующим регулярным выражением:
preg_match_all('~[\w.-]+(?:ru|рф)~mui', $text, $matches);
print_r($matches);
В результате получаем:
Array
(
[0] => Array
(
[0] => wiki.nashtransport.ru
[1] => wiki.nashtransport.ru
[2] => mignews.ru
[3] => mignews.ru
[4] => сергиев-посад.рф
[5] => domen.ru
)
)
Если регулярное выражение захватит неправильные доменные имена, то вы можете отфильтровать массив доменов, следующим способом:
$array = array_filter($matches[0], function ($x) {
return (filter_var('http://'.($x), FILTER_VALIDATE_URL)) ? true : false;
});
print_r($array);
Но, в мануале написано:
Обратите внимание, что эта функция считает корректными только URL, состоящие из символов ASCII; Интернациональные доменные имена не пройдут проверку.
Поэтому следует сначала воспользоваться библиотекой IDNA, к примеру эта.
Например, домен сергиев-посад.рф
в итоге преобразуется в xn----8sbedibbx1djfkj.xn--p1ai
. Тем самым в итоге он пройдет проверку с фильтрацией URL.
<?php
$text="49 0 0 wiki.nashtransport.ru wiki.nashtransport.ru/ 27184 2323 49 0 0 wiki.nashtransport.ru1 wiki.nashtransport.ru1/ 27184 2323 49 0 0 wiki.nashtransport.ru2 wiki.nashtransport.ru2/ 27184 2323";
// переворачиваем текст для извлечения строки между \ и пробелом
$text=strrev($text);
preg_match_all("!/(.*?)\s!si",$text,$result);
foreach($result as $key=>$val)
{
foreach($val as $key=>$vals)
{
if (preg_match("/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i",$vals))
{
// переворачиваем текст обратно
$vals=strrev($vals);
echo $vals."</br>";
}
}
}
?>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть переменная в URL page, есть функция load в js надо перед вызовом функции изменить переменную GETНапример:
Может кто нибудь уже сталкивался с этой проблемой и знает ее решениеНеобходимо настроить ЧПУ пагинацию
Мне нужно реализовать статистику посещения на сайте, хотел в конструкторе всю логику прописать, но доктрину не получается вызвать из конструктора,...