2016-10-26 2 views
0

У меня есть строка, и мне нужно узнать все цифры data-id. Это строкаКак получить конкретный атрибут html в строке, используя php?

<li data-type="mentionable" data-id="2">bla bla... 
<li data-type="mentionable" data-id="812">some test 
<li>bla bla </li>more text 
<li data-type="mentionable" data-id="282"> 

Так что в конце концов он найдет меня это: 2,812,282

+0

Возможный дубликат [Как вы анализируете и обрабатываете HTML/XML в PHP?] (Http://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in -php) – chris85

ответ

0

Вы можете использовать регулярное выражение, чтобы найти целевую часть строки в preg_match_all().

preg_match_all("/data-id=\"(\d+)\"/", $str, $matches); 
// $matches[1] is array contain target values 
echo implode(',', $matches[1]) // return 2,812,282 

См результат код в demo

Поскольку ваша строка HTML, вы можете использовать DOMDocument класс для разбора HTML и найти целевой атрибут в документе.

+0

'Implode' даст желаемый результат,' echo implode (',', $ matches [1]); '. – chris85

+0

@ chris85 Хорошее упоминание – Mohammad

1

Использование DOMDocument вместо:

<?php 

$data = <<<DATA 
<li data-type="mentionable" data-id="2">bla bla... 
<li data-type="mentionable" data-id="812">some test 
<li>bla bla </li>more text 
<li data-type="mentionable" data-id="282"> 
DATA; 

$doc = new DOMDocument(); 
$doc->loadHTML($data, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 

$xpath = new DOMXPath($doc); 

$ids = []; 
foreach ($xpath->query("//li[@data-id]") as $item) { 
    $ids[] = $item->getAttribute('data-id'); 
} 
print_r($ids); 
?> 


Который дает 2, 812, 282 см a demo on ideone.com.

Смежные вопросы