9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
1

Как включить в регулярное выражение все символы?

10.06.2017, 13:12. Показов 1402. Ответов 1

Author24 — интернет-сервис помощи студентам
Обрабатываю регулярным выражением HTML.
Регулярное выражение:
(?<=<div\ class="project-h"><a\ href="/).*?(?=</a></div>)

Получаю список:
ru/project/384339/vozhdenie avto">вождение авто
ru/project/384202/remont avto">ремонт авто

Вопрос.
1. Как доработать регулярное выражение, чтобы оно возвращало список в формате:
вождение авто
ремонт авто
?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2017, 13:12
Ответы с готовыми решениями:

Регулярное выражение, которое пропускает все символы, кроме пробелов
Я состряпал такое вот выражение preg_match(&quot;#^+$#&quot;,$password) но оно по какой-то причине не...

Регулярное выражение, принимающее все символы, кроме цифр и точки
Маленький вопрос. Как правильно составить регулярное выражение, которое бы проверяло на все...

Составить регулярное выражение, которое считывало бы все символы в строке с 13 по 72
Приветствую! Не могу ничего толкового придумать.Нужно составить выражение, которое считывало бы...

Регулярное выражение, которое убирало бы из строки все символы, не являющиеся буквами
Всем привет! Ребят, помогите пожалуйста составить выражение для регулярок, которое убирало бы из...

1
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
11.06.2017, 00:41 2
Лучший ответ Сообщение было отмечено zakaz_77 как решение

Решение

Цитата Сообщение от zakaz_77 Посмотреть сообщение
Обрабатываю регулярным выражением HTML
В принципе, после этой фразы можно было дальше не читать. Регулярные выражения для разбора/парсинга HTML - это худший из возможных вариантов. Для таких целей есть ряд соответствующих инструментов: как пользовательских библиотек, так и уже встроенных в PHP, как, к примеру, класс DOMDocument.
Вот, как можно решить вашу задачу:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$html = <<<EOL
<div class="project-h"><a href="ru/project/384339/vozhdenie-avto">вождение авто</a></div>
<div class="project-h"><a href="ru/project/384202/remont-avto">ремонт авто</a></div>
EOL;
 
$dom = new \DOMDocument();
$ies = libxml_use_internal_errors(true);
$dom->loadHTML('<?xml encoding="UTF-8">' .$html);
libxml_use_internal_errors($ies);
$xpath = new \DOMXPath($dom);
$links = $xpath->query("//*[contains(@class, 'project-h')]/a");
 
$output = [];
foreach($links as $link) {
    $output[] = [
        'url' => $link->getAttribute('href'),
        'text' => $link->nodeValue
    ];
}
var_export($output);
Результат:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
array (
  0 => 
  array (
    'url' => 'ru/project/384339/vozhdenie-avto',
    'text' => 'вождение авто',
  ),
  1 => 
  array (
    'url' => 'ru/project/384202/remont-avto',
    'text' => 'ремонт авто',
  ),
)
Добавлено через 3 минуты
Есть так же и библиотеки: phpQuery (почитать) или Simple HTML DOM Parser. Но лично мне всегда хватало DOMDocument + DOMXPath
1
11.06.2017, 00:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2017, 00:41
Помогаю со студенческими работами здесь

Добавить символы в регулярное выражение
!preg_match('/^{3,15}$/') Как в это регулярное выражение добавить разрешение на вопрос?...

Регулярное выражение и кириллические символы
Добрый день. Мне необходимо проверить на содержание в пути переменной только кириллических и лат....

Регулярное выражение не выбирает повторяющиеся символы
Всем привет! Подскажите пожалуйста, где кроется ошибка. Вот пример текста, который нужно...

Регулярное выражение, включающее только кириллицу и символы \- \. \`
Нужно составить регулярное выражение, которое будет включать только кириллицу и символы \- \. \` ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru