TOP ▲ itcore TOP プログラムパーツ

uHtmlTagGet タグで囲まれたデータを取得する。入れ子タグには不対応。 | itcore 2018年

PHP

PHP TOP

関数

<?php
// タグで囲まれたデータを取得する。入れ子タグには不対応。
function uHtmlTagGet($data, $tag) {
  $tag2 = "<$tag>";
  $tag3 = "<$tag ";
  $tag_data = stristr($data, $tag2);
  if (false === $tag_data) $tag_data = stristr($data, $tag3);
  if (false === $tag_data) return "";
  $tag_data = substr($tag_data, strlen($tag2));
  $end = strpos($tag_data, "<"); // 終了タグまたは次のタグが合ったところで終了
  if (false === $end) return $tag_data;
  $tag_data = substr($tag_data, 0, $end);
  return $tag_data;
}
?>

テスト

<?php include "uHtmlTagGet.func"; ?>
<?php
$data = "<h3>url</h3>"; $tag = "h3"; $ret = uHtmlTagGet($data, $tag); echo htmlspecialchars("data=$data tag=$tag ret=$ret") . "<br>\n";
$data = "<h3>url</h3>"; $tag = "h"; $ret = uHtmlTagGet($data, $tag); echo htmlspecialchars("data=$data tag=$tag ret=$ret") . "<br>\n";
$data = "abc<a href>url</a>123"; $tag = "a"; $ret = uHtmlTagGet($data, $tag); echo htmlspecialchars("data=$data tag=$tag ret=$ret") . "<br>\n";
$data = "abc<a href>url</a>123"; $tag = "a2"; $ret = uHtmlTagGet($data, $tag); echo htmlspecialchars("data=$data tag=$tag ret=$ret") . "<br>\n";
$data = "<tr><td>data</td></th>"; $tag = "td"; $ret = uHtmlTagGet($data, $tag); echo htmlspecialchars("data=$data tag=$tag ret=$ret") . "<br>\n";
$data = "<tr><td>data</td></th>"; $tag = "tr"; $ret = uHtmlTagGet($data, $tag); echo htmlspecialchars("data=$data tag=$tag ret=$ret") . "<br>\n";
$data = "<tr><td>data<td>data2"; $tag = "td"; $ret = uHtmlTagGet($data, $tag); echo htmlspecialchars("data=$data tag=$tag ret=$ret") . "<br>\n";
$data = "<tr><td>data td"; $tag = "td"; $ret = uHtmlTagGet($data, $tag); echo htmlspecialchars("data=$data tag=$tag ret=$ret") . "<br>\n";
?>

実行結果

data=<h3>url</h3> tag=h3 ret=url
data=<h3>url</h3> tag=h ret=
data=abc<a href>url</a>123 tag=a ret=href>url
data=abc<a href>url</a>123 tag=a2 ret=
data=<tr><td>data</td></th> tag=td ret=data
data=<tr><td>data</td></th> tag=tr ret=
data=<tr><td>data<td>data2 tag=td ret=data
data=<tr><td>data td tag=td ret=data td