0

すべての部分文字列の内容を 1 つの特別な 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"
  }

どうすれば入手できますか?

4

1 に答える 1

1

HTML の解析は RegEx 経由で行うべきではありません。次のように 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);
于 2013-04-22T15:00:12.347 に答える