mikka, это вы привели строку, которую надо получить. А ещё нужна строка, ИЗ которой надо получить. Или я не так понял?
после удаления в начале регулярного выражения
?<= ошибка ушла и получил практически нужный результат.
использую вот так вот
PHP:
скопировать код в буфер обмена
function get_content($url){
$pcre = "~(</script>\r\n|\h)<a[^>]*>(.+?)</a>~s";
return $katalog_link;
}
url='http://test1.ru/';
$nameNum=get_content($url);
print_arr($nameNum);
Был бы признателен, если бы Вы объяснили принцип работы данного регулярного выражения.
mikka пишет:после удаления в начале регулярного выражения ?<= ошибка ушла
Это ж какая версия php у вас используется? O.о
Если у вас не поддерживается
Ретроспективная проверка, тогда можно просто сгруппировать НЕ сохраняющими скобками
(?:...
)Спойлер (Отобразить)PHP:
скопировать код в буфер обмена
function get_content($url){
$pcre = "~(?:</script>\r\n|\h)<a[^>]*>(.+?)</a>~s";
return $katalog_link;
}
url='http://test1.ru/';
$nameNum=get_content($url);
print_arr($nameNum);
Искомая подстрока будет соответствовать шаблону, если:
1. Начинается с тега
</script> после которого обязательно следуют символы перевода каретки и новой строки
\r\n, или
| символ горизонтального отступа (пробел)
\h.
Описанную выше последовательность символов необходимо сгруппировать с помощью конструкции не сохраняющих скобок:
(?: </script> \r\n | \h
)
2. Далее ожидается html-тег
<a, за которым может следовать любая последовательность символов, кроме символа
>, и эта последовательность символов должна заканчиваться символом
>:
<a[^>]*>
3. Далее следует любая группа символов
.+?, за которой обязательно должен следовать закрывающий html-тег
</a>. Обратите внимание, что для "захвата" группы символов между html-тегами
<a[^>]*> и
</a> в отдельный элемент массива, используется захватывающая группировка
( .+?
):
<a[^>]*>(.+?)</a>
4. Символы
~ - это ограничители шаблона.
5. Модификатор
s - задаёт режим соответствия для символьного класса "
."
(точка - это символьный класс в регулярных выражениях).
По умолчанию символ "
." соответствует
почти любому символу, кроме символа перевода на новую строку
(и ещё каких-то непечатаемых символов, точно не помню). Для включения режима полного соответствия любому символу, в конец шаблона добавляется модификатор
s.