Парсинг повторяющихся тегов через регулярки php
"Получить текст повторяющихся тегов php". Или : "Парсинг повторяющихся тегов через регулярки php". Рассмотрим несколько примеров, с кодом!
"Получаем текст повторяющихся тегов php".
- Получить текст повторяющихся тегов php
- Получить текст повторяющихся тегов php №2
- Парсинг тегов с атрибутами через регулярки на php.
- Парсинг тегов с атрибутами через регулярки на php -
RETRO
Получить текст повторяющихся тегов php
Начнем "получать текст из повторяющихся тегов php" - для этого вам понадобится:
В качестве тега используем тег "b" - это нужно для живого примера... поскольку на станице данный тег больше не используется...:
В переменную помещаем код :
$F_irst ='
<b> текст №1 </b>
<b> текст №2 </b>
<b class="example"> текст №3</b>
';
Далее используем "preg_match_all"
preg_match_all('#<b>(.+?)</b>#su', $F_irst , $matches_1, PREG_PATTERN_ORDER);
И выводим массив с помощью print_r:
Соберем весь код:
Код Получения текста повторяющихся тегов php!
<?
$F_irst ='
<b> текст №1 </b>
<b> текст №2 </b>
<b class="example"> текст №3</b>
';
preg_match_all('#<b>(.+?)</b>#su', $F_irst , $matches_1, PREG_PATTERN_ORDER);
print_r($matches_1[1]);
?>
Пример получения текста повторяющихся тегов php!
Array
(
[0] => текст №1
[1] => текст №2
)
Получить текст повторяющихся тегов php №2
Если вы смогли прочитать предыдущий пункт, то увидели, что "preg_match_all" не собрал текст из третьего тега... поскольку там есть атрибут, и вообще изначально не ставилась такая задача...
Код собирал текст только в числом теге :
<b></b>
Как собрать текст повторяющихся тегов php если есть класс?
Для этого вам понадобится:
Теория и практика из выше идущего пункта!
Массив используем тот же...
$F_irst ='
<b> текст №1 </b>
<b> текст №2 </b>
<b class="example"> текст №3</b>
';
Изменим выражение "preg_match_all" и переменную внутри с "$matches_1" на "$matches_2":
preg_match_all('#<b[^>]*>(.+?)</b>#su', $F_irst , $matches_2, PREG_PATTERN_ORDER);
Соберем весь код:
Код Получения текста повторяющихся тегов php если есть класс!
<?
$F_irst ='
<b> текст №1 </b>
<b> текст №2 </b>
<b class="example"> текст №3</b>
';
preg_match_all('#<b[^>]*>(.+?)</b>#su', $F_irst , $matches_2, PREG_PATTERN_ORDER);
print_r($matches_2[1]);
?>
Пример получения текста повторяющихся тегов php №2!
Array
(
[0] => текст №1
[1] => текст №2
[2] => текст №3
)
Парсинг тегов с атрибутами через регулярки на php.
Предположим, что вам требуется собрать текст только в тех тегах, где есть какой-то атрибут!
Для примера используем класс = "example" и далее вам потребуется:
Чуть чуть модернизируем предыдущий код Html:
$S_econd ='
<b> текст №1 </b>
<b class="example"> текст №2 с классом "example" </b>
<b class="example"> текст №3 с классом "example" </b>
';
Изменяем условие в "preg_match_all" помещаем весь тег с классом прямо вовнутрь "preg_match_all":
preg_match_all('#<b class="example">(.+?)</b>#su', $S_econd , $matches_3, PREG_PATTERN_ORDER);
Соберем весь код:
Код для получения текста повторяющихся тегов php если есть класс!
<?
$S_econd ='
<b> текст №1 </b>
<b class="example"> текст №2 с классом "example" </b>
<b class="example"> текст №3 с классом "example" </b>
';
preg_match_all('#<b class="example">(.+?)</b>#su', $S_econd , $matches_3, PREG_PATTERN_ORDER);
print_r($matches_3[1]);
?>
Пример получения текста повторяющихся тегов php если есть класс!
И... как обычно размещаем выше приведенный код прямо здесь:
Array
(
[0] => текст №2 с классом "example"
[1] => текст №3 с классом "example"
)
Получить содержание тегов с атрибутами через регулярки на php - RETRO
И на последок приведу код, которым я пользовался 100 лет назад, когда только начинал изучать php.
Для этого вам понадобится...:
Опять какой-то "html код", помещенный в переменную... используем таблицу - тег table и в один из "td" помещаем класс -
Разбиваем в массив с помощью explode по нашему классу и получаем правую сторону от класса:
Удаляем первую ячейку с помощью unset - она нам не нужна.
Поскольку нумерация массива сломалась нужно применить array_values.
Далее в цикле for повторяем туже операцию, только получаем всё в ячейке слева:
$table_arr = array();
for ($i=0; $i < count($ta); $i++) {
$table_arr[] = explode('</td>' , $ta[$i])[0] ;
}
И выводом массив опять с помощью print_r.
Соберем весь код:
Код для получения текста повторяющихся тегов php - РЕТРО !
<?
$table = '<table class="table">
<tr>
<td>Запрос:</td>
<td>Количество:</td>
</tr>
<tr>
<td>здесь текст 1</td>
<td class="num">1 500</td>
</tr>
<tr>
<td>здесь текст 2</td>
<td class="num">1 000</td>
</tr>
</table>
';
$ta = explode('class="num">' , $table ) ;
unset($ta[0]);
$ta = array_values( $ta) ;
$table_arr = array();
for ($i=0; $i < count($ta); $i++) {
$table_arr[] = explode('</td>' , $ta[$i])[0] ;
}
print_r($table_arr );
?>
Пример получения текста повторяющихся тегов php - РЕТРО !
Снова размещаем выше приведенный код прямо здесь:
Array
(
[0] => 1 500
[1] => 1 000
)