我希望在一个特殊的html标记中获取所有子字符串内容,在示例中为
<b></b>:
function getTextBetweenTags($string, $tagname) {
$pattern = "/<$tagname ?.*>(.*)<\/$tagname>/";
preg_match($pattern, $string, $matches);
return $matches;
}
$message = "<p> Te informamos que la parada <b> Avenida de la Vega </b>
se ha llenado, el día <b>2013-04-22 </b> a las <b>08:23:27</b>.
<br><br> No olvides cerrar este ticket cuando hayas resuelto incidencia.
<br><br> Gracias </p>";
$result = getTextBetweenTags($message, "b");
var_dump($txt);
我明白了:
array(2) {
[0]=>
string(90) "<b> Avenida de la Vega </b> se ha llenado, el día <b>2013-04-22 </b> a las <b>08:23:27</b>"
[1]=>
string(8) "08:23:27"
}
我想:
array(3) {
[0]=>
string(20) "Avenida de la Vega"
[1]=>
string(10) "2013-04-22"
[2]=>
string(8) "08:23:27"
}
我怎样才能得到它?
答案 0 :(得分:1)
不应通过RegEx解析HTML。更好地使用这样的DOM:
$html='
<p> Te informamos que la parada <b> Avenida de la Vega </b>
se ha llenado, el día <b>2013-04-22 </b> a las <b>08:23:27</b>.
<br><br> No olvides cerrar este ticket cuando hayas resuelto incidencia.
<br><br> Gracias </p>';
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html); // loads your html
$nodeList = $doc->getElementsByTagName('b');
$items = array();
for($i=0; $i < $nodeList->length; $i++) {
$node = $nodeList->item($i);
$items[] = $node->nodeValue;
}
print_r($items);