Защо не мога да разбия ‹ul›‹/ul› в php?

Опитвам се да експлодирам "ул", за да получа текста. Код по-долу, Помощ, оценявам.

<?php
$html="<ul id='get_user' class='get_user'>1,2,3,4</ul>";
$first_explode=("<ul id='get_user' class='get_user'>",$html);
$second_explode=("</ul>", first_explode[1]);
$thrid_explode=(",", $second_explode[0]);
echo $thrid_explode[1]; //expecting 2
?>


person kenny    schedule 26.02.2015    source източник
comment
това ли е целият истински низ?   -  person    schedule 26.02.2015
comment
Чували ли сте за това ново нещо, наречено регулярни изрази?   -  person Achrome    schedule 26.02.2015
comment
какво е регулярни изрази?   -  person kenny    schedule 26.02.2015
comment
ако всичко е както показваш по-горе, всичко, от което се нуждаеш, е php.net/strip_tags   -  person    schedule 26.02.2015


Отговори (2)


само с това.

<?php
    $html ="<ul id='get_user' class='get_user'>1,2,3,4</ul>";
    $arrayUL = explode(",", strip_tags($html));
    print_r($arrayUL);
?>

Ръководство за strip_tags

person check    schedule 26.02.2015
comment
не мога да си представя откъде ти хрумна тази идея. - person ; 26.02.2015
comment
просто искам да помогна с решаването. - person check; 26.02.2015
comment
Благодаря за вашата помощ. Ти ми разреши въпроса. но за съжаление не мога да реша проблема си. Тъй като използвам .ajax, за да върна текста към ‹ul›, така че не работи. Благодаря все пак. - person kenny; 26.02.2015
comment
какъв е проблема..? можете да използвате json в .ajax, за да получите върнати данни от страна на php. - person check; 26.02.2015
comment
Не знам какъв е проблема. Мога да повторя ‹ul›‹/u› с ajax $(#get_user).text(data); , но когато използвам strip_tags, той не отразява нищо, ако сложа някакъв текст между‹ul›‹/ul›, той ще отразява този текст. аз не разбирам - person kenny; 26.02.2015

Вижте този отговор на Stackoverflow: RegEx за извличане на текст между HTML таг

Регулярният израз "/<([A-Za-z][A-Za-z0-9]*)\b[^>]*>(.*?)<\/\1>/" ще извлече текст в рамките на HTML тагове. Можете да използвате preg_match на php: http://php.net/manual/en/function.preg-match.php

Така:

$regex = '/<([A-Za-z][A-Za-z0-9]*)\b[^>]*>(.*?)<\/\1>/';
$string = '<div class="some-class" style="display:block;">Hello</div>';
preg_match($regex, $string, $matches);
print_r($matches);

В обобщение, вие искате да използвате регулярни изрази за анализиране на нещо по-сложно от обикновените разделители на знаци. Ето удобен онлайн тестер за регулярни изрази: https://regex101.com/#pcre

person mjwunderlich    schedule 26.02.2015
comment
никога не трябва да използвате регулярни изрази за анализиране на html. stackoverflow.com/questions/6751105/ - person ; 26.02.2015
comment
Благодаря за отделеното време. Но копирам и поставям вашия код точно за тестване. Не става. Пропуснал ли си нещо или вероятно не знам как да го използвам. - person kenny; 26.02.2015
comment
@Dagon, това е въпрос на употреба -- ако това е един ред HTML, който трябва да анализирате, работи доста добре. Очевидно за по-големи начинания използвайте XML DOM анализатор. stackoverflow.com/a/6752487/1000437 - person mjwunderlich; 26.02.2015