PHP - как я могу получить значение атрибута тега Div - PullRequest
7 голосов
/ 28 февраля 2012

У меня есть div, который может быть скрыт или нет, в зависимости от пользователя. Этот div имеет атрибут с именем 'attrLoc'. Я хотел бы иметь возможность извлекать это значение атрибута из php. Надеюсь, кто-то может помочь. Заранее благодарю за ваши ответы. Приветствия. Марк.

Мой HTML:

<div id="btn-loc" class="hidden" attrLoc="1">
...
</div>

Ответы [ 5 ]

10 голосов
/ 28 февраля 2012

XPath вполне стандартно для запросов XML-структур .

Тем не менее, обратите внимание, что если вы хотите анализировать HTML из ненадежного источника, то есть источника, где HTML не совсем правильно сформирован, вы должны предпочесть DOMDocument::loadHTML() - SimpleXML варианты, в частности simplexml_load_string.

Например

<?php
$html = '
<div id="btn-loc" class="hidden" attrLoc="1">
  ...
</div>';

$doc = DOMDocument::loadHTML($html);
$xpath = new DOMXPath($doc);
$query = "//div[@id='btn-loc']";
$entries = $xpath->query($query);
foreach ($entries as $entry) {
  echo "Found: " . $entry->getAttribute("attrloc");
}

Надеюсь, это поможет!

4 голосов
/ 28 февраля 2012

Использование jQuery в JavaScript

var state = $('#btn-loc').attr('attrLoc');

Затем вы можете отправить значение в PHP

EDIT:

Если вы работаете с HTML-страницей / DOM в PHP, вы можете использовать SimpleXML для обхода DOM и извлечения ваших атрибутов таким образом

$xml = simplexml_load_string(
    '<div id="btn-loc" class="hidden" attrLoc="1">
    ...
    </div>'
);

foreach (current($xml->xpath('/*/div'))->attributes() as $k => $v)
{
    var_dump($k,' : ',$v,'<br />');
}

Вы увидите имя и значение сброшенных атрибутов

id : btn-loc
class : hidden
attrLoc : 1
2 голосов
/ 28 февраля 2012

Вы также можете использовать Объектная модель документа

<?php
$str = '<div id="btn-loc" class="hidden" attrLoc="1">
text
</div>';
$doc = new DOMDocument();
$d=$doc->loadHtml($str);
$a = $doc->getElementById('btn-loc');
var_dump($a->getAttribute('attrloc'));
1 голос
/ 28 февраля 2012

Как насчет этого

$str = '<div id="btn-loc" class="hidden" attrLoc="1">';
$pattern = '/<div id="btn-loc".*\sattrLoc="([0-9])">/';
preg_match($pattern, $str, $matches);
var_dump($matches);

Выходы

array
  0 => string '<div id="btn-loc" class="hidden" attrLoc="1">' (length=45)  
  1 => string '1' (length=1)
1 голос
/ 28 февраля 2012

чтобы сделать это с помощью php, используйте простой html dom parser.имеет немного кривой обучения, но вид полезен

http://simplehtmldom.sourceforge.net/

...