Как получить начальный тег и конечный тег элемента HTML с помощью PHP

0

Я пытался целый день реализовать это, но прогресса нет.

У меня есть эта часть кода

 $LookUpData =array(
        ID1 =>  '<div> First </div>',
        ID2 => '<p>Second</p>'
    );

$tagData = $LookUpData[ID1];
print_r($tagData);

Результат, который я получил в этом случае: Первый

Идеальный сценарий будет, если я получу:

           0 => <div>
           1 => First
           2 => </div>

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

  • 0
    Что именно вы пытаетесь извлечь? Внутренний HTML и теги отдельно?
  • 0
    я не могу получить второй выход
Показать ещё 2 комментария
Теги:

2 ответа

0
Лучший ответ

Код, который решает вашу проблему

<?php
$LookUpData =array(
        'ID1' =>  '<div> First </div>',
        'ID2' => '<p>Second</p>'
);

$tagData = $LookUpData['ID1'];

preg_match('#(<.*?>)(.*)(</.*?>)#', $LookUpData['ID1'],$m);
unset($m[0]);
print_r($m);
?>

Выход из кода:

 Array ( [1] => <div> [2] => First [3] => </div> )

Объяснение:

  • Вы должны использовать "или", если вы хотите называть клавиши для массивов. Если вы этого не сделаете, вы заметите, что он не является постоянным
  • Preg match идеально подходит для ваших потребностей, потому что он ищет совпадение шаблонов в строке.

Объяснение шаблона:

  • ## - это символы, которые определяют начало и конец рисунка
  • (<.*?>) - это подшаблон, который будет искать любой символ между <>, он будет соответствовать

    и т.п.

  • (.*) - это шаблон для любого персонажа (почти любой)
  • (</.*?>) - еще один подшаблон на этот раз для закрытия тега почти такой же, как первый.

Демо-версия в Интернете - обратите внимание, что код немного отличается, чтобы правильно отображаться в браузере (html-теги)

  • 0
    Отлично, отлично, отлично. Благодарю.
  • 0
    Это не проблема :) выучить регулярные выражения, это очень помогает :)
Показать ещё 1 комментарий
0
$matches = array();
preg_match("/(<[^>]+>)(.*)(<\/[^>]>)/", "<div>First</div>", $matches);
var_dump($matches);

Должно быть достаточно, чтобы вы начали

  • 0
    Не работает Я только что проверил это на writecodeonline.com/php $ LookUpData = array (ID1 => '<div> First </ div>', ID2 => '<p> Second </ p>'); $ tagData = $ LookUpData [ID1]; $ match = array (); preg_match ("/(<[^>]>)(.*)(<\/[^>]>)/", "<div> First </ div>", $ соответствует); var_dump (соответствует $);
  • 0
    В нем есть некоторые ошибки [^>] вмещающий только 1 символ, который вы должны объявить *? или +? к этим классам. Также .* Является жадным, что не подходит для больших HTML-файлов.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню