Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 21

парсинг тега

30.03.2015, 14:39. Показов 1757. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
например, дана строка
HTML5
1
<rob name="lol" value="2" x="1.0" type="3" />
мне нужно спарсить в php определённые данные независимо от последовательности

например, мне нужно получить значение value, x, и type, т.е. 2, 1.0 и 3
но, не факт что они будут находится так (value.. type..)
возможно, всё будет так
HTML5
1
<rob value="2" name="lol" type="3" x="1.0" />
но спарсить по-прежнему нужно value, x и type

буду очень благодарен
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.03.2015, 14:39
Ответы с готовыми решениями:

Вывод из базы до тега
В базу добавляется текст, тег и текст заключённый в этот тег. Как сделать вывод только до этого тега?

Парсинг одного тега XML из нескольких одинаковых
Имеется такой XML код:&lt;br&gt; &lt;тег1&gt; &lt;тег2&gt;Яблоко&lt;/тег2&gt; &lt;тег2&gt;Вишня&lt;/тег2&gt; ...

Вылет из тега
Всем привет! Возникла проблема с PHP кодом &lt;?php if($params-&gt;get('itemImage') || $params-&gt;get('itemIntroText')): ?&gt; ...

9
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
30.03.2015, 15:31
Alex128,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$html = <<< HTML
<rob value="2" name="lol" type="3" x="1.0" />
<rob name="lol" value="2" x="1.0" type="3" />
HTML;
 
$dom = new DOMDocument;
@$dom->loadHTML($html);
$robs = $dom->getElementsByTagName('rob');
foreach ($robs as $rob)
{
    $a = $rob->attributes;
    echo $a->getNamedItem("value")->nodeValue." ".$a->getNamedItem("x")->nodeValue." ".$a->getNamedItem("type")->nodeValue."<br/>\n";
}
1
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 21
30.03.2015, 15:46  [ТС]
Цитата Сообщение от pav1uxa Посмотреть сообщение
Alex128,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$html = <<< HTML
<rob value="2" name="lol" type="3" x="1.0" />
<rob name="lol" value="2" x="1.0" type="3" />
HTML;
$dom = new DOMDocument;
@$dom->loadHTML($html);
$robs = $dom->getElementsByTagName('rob');
foreach ($robs as $rob)
{
* * $a = $rob->attributes;
* * echo $a->getNamedItem("value")->nodeValue." ".$a->getNamedItem("x")->nodeValue." ".$a->getNamedItem("type")->nodeValue."<br/>\n";
}
если указать большую букву, то ничего не выведет. пример:
PHP
1
2
3
4
5
6
7
8
$html = <<< HTML
<rob Value="2" name="lol" type="3" x="1.0" />
<rob name="lol" Value="2" x="1.0" type="3" />
HTML;
 
...
 
echo $a->getNamedItem("Value")->nodeValue." ".$a->getNamedItem("x")->nodeValue." ".$a->getNamedItem("type")->nodeValue."<br/>\n";
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
30.03.2015, 15:53
Цитата Сообщение от Alex128 Посмотреть сообщение
если указать большую букву, то ничего не выведет. пример:
вот я у всех атрибутов переделал регистр абы как и все работает
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$html = <<< HTML
<rob vAlUe="2" nAME="lol" type="3" x="1.0" />
<rob NAme="lol" Value="2" x="1.0" tYPe="3" />
HTML;
$dom = new DOMDocument;
@$dom->loadHTML($html);
$robs = $dom->getElementsByTagName('rob');
foreach ($robs as $rob)
{
     $a = $rob->attributes;
     echo $a->getNamedItem("value")->nodeValue." ".$a->getNamedItem("x")->nodeValue." ".$a->getNamedItem("type")->nodeValue."<br/>\n";
}
1
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 21
30.03.2015, 17:20  [ТС]
Цитата Сообщение от pav1uxa Посмотреть сообщение
вот я у всех атрибутов переделал регистр абы как и все работает
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$html = <<< HTML
<rob vAlUe="2" nAME="lol" type="3" x="1.0" />
<rob NAme="lol" Value="2" x="1.0" tYPe="3" />
HTML;
$dom = new DOMDocument;
@$dom->loadHTML($html);
$robs = $dom->getElementsByTagName('rob');
foreach ($robs as $rob)
{
* * *$a = $rob->attributes;
* * *echo $a->getNamedItem("value")->nodeValue." ".$a->getNamedItem("x")->nodeValue." ".$a->getNamedItem("type")->nodeValue."<br/>\n";
}
если один из тегов не дописать, то результата не будет, но прошлое значение останется. пример
PHP
1
2
3
4
$html = <<< HTML
<rob vAlUe="1" 
<rob NAme="lol" Value="2" x="1.0" tYPe="3" />
HTML;
в результате получим 1 1.0 3, а не 2 1.0 3
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
30.03.2015, 17:29
HTML5
1
2
<rob vAlUe="1" 
<rob NAme="lol" Value="2" x="1.0" tYPe="3" />
Ну это вообще уже черти что, для чего Вам обрабатывать такие кривые теги?

Цитата Сообщение от Alex128 Посмотреть сообщение
если указать большую букву
Цитата Сообщение от Alex128 Посмотреть сообщение
если один из тегов не дописать
Если свет отключат, если конец света наступит... Так это до бесконечности можно придумывать эти самые "если...". Вот ссылка на официальную документацию по регулярным выражениям php, обрабатывайте столько "если", сколько придумаете - http://php.net/manual/ru/refer... syntax.php
0
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 21
30.03.2015, 17:42  [ТС]
Цитата Сообщение от pav1uxa Посмотреть сообщение
Ну это вообще уже черти что, для чего Вам обрабатывать такие кривые теги?
код будет вводить пользователь и что-то может не дописать, либо криво скопировать
в результате он получит неверный код

Добавлено через 5 минут
я и не думал, что в getNamedItem не важен регистр букв
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
30.03.2015, 17:47
Цитата Сообщение от Alex128 Посмотреть сообщение
либо криво скопировать
Ну так и в ответ ему надо ошибку какую-нибудь вываливать, мол неверные данные, проверьте еще раз... А если он их там через запятую начнет вводить и фигурными скобками выделять, Вы этот момент тоже захотите учесть?)
0
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 21
30.03.2015, 17:52  [ТС]
Цитата Сообщение от pav1uxa Посмотреть сообщение
Ну так и в ответ ему надо ошибку какую-нибудь вываливать, мол неверные данные, проверьте еще раз... А если он их там через запятую начнет вводить и фигурными скобками выделять, Вы этот момент тоже захотите учесть?)
вряд ли станет сам писать, это создаётся для больших объёмов для того, чтобы кoнвepтиpoвaть один код в другой, который он откуда то скопирует

как вашим способом проверить, закрыт ли тег? выводить то не выводит, но значения задаются прошлые
0
0 / 0 / 0
Регистрация: 17.09.2016
Сообщений: 3
01.11.2016, 17:46
Если кому-то тема кажется актуальной, меня более устроил классический вариант:
PHP
1
2
$html=preg_replace('/(<)([^>]+)(\simg(\s|\/?>))/si',"$1img$2$4",$html);
$html=preg_replace('/(<img [^>]*src=("?|\'?))(?!http)([^ >"\']+)("?\'?[^>]*>)/si',"$1http://hren.ru/test/$3$4",preg_replace('/(<img [^>]*src=("?|\'?))(\/)([^ >"\']+)("?\'?[^>]*>)/si',"$1$4$5",$html));
У меня работает корректно.
А ссылки, как я понимаю, работают только в двойных кавычках.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.11.2016, 17:46
Помогаю со студенческими работами здесь

На подобие мета-тега
Нужно что-то подобное для php, на подобие мета-тега HTML &lt;meta charset=..&gt; ?

Валидация тега select
Добрый день! Как проверить на пустоту опции при помощи php? &lt;select&gt; &lt;option&gt;&lt;/option&gt; &lt;option&gt;Пункт 1&lt;/option&gt; ...

Замена тега в тексте
Здравствуйте . Подскажите , только начал изучать php function filter($text) { // Вот тут нужно найти все ссылки типа &lt;a...

Обработка тега select
Здравствуйте, у меня есть форма: &lt;form action=&quot;admin.php&quot; method=&quot;POST&quot;&gt; &lt;select name=&quot;name&quot; id=&quot;&quot;&gt; &lt;option...

Заполнение тега <div>
Проблема в следующем. Пытаюсь применить к выводимому тексту &lt;div style = &quot;$someStyle&quot;&gt;текст&lt;/div&gt;. Получается следующая ошибка ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru