PHP提取HTML标签内容
初学PHP,试着做一个在线帮助文档,需要从HTML中提取一些标签内容
这个可以添加任意数量形参,用“|”分割,不同标签按顺序排列返回,支持返回数组或string
使用方法:
<?php
$a = 'a<h2>aaaa</h2>bbbb<h2>ccccc</h2>ddddd<h5>eeeee</h5>fffff';
$b = str($a,true,'<h2|</h2>','<h5|</h5>','aa|cc');
function str($str,$ary = true,...$find){
for ($i=0; $i < count($find) ; $i++) {
$find[$i] = explode('|', $find[$i]);
}
$re = array();
$key = array();
$str_temp = array();
for ($i=0; $i < count($find) ; $i++) {
$key[$i] = 0;
$str_temp[$i] = $str;
while (strpos($str_temp[$i], $find[$i][0]) !== false && strpos($str_temp[$i],$find[$i][1],strpos($str_temp[$i], $find[$i][0])+strlen($find[$i][0])) !== false) {
$value = substr($str_temp[$i], strpos($str_temp[$i],$find[$i][0])+strlen($find[$i][0]), strpos($str_temp[$i],$find[$i][1],strpos($str_temp[$i], $find[$i][0])+strlen($find[$i][0])) - (strpos($str_temp[$i],$find[$i][0])+strlen($find[$i][0])));
$key[$i] += strpos($str_temp[$i],$find[$i][1],strpos($str_temp[$i], $find[$i][0])+strlen($find[$i][0]))+strlen($find[$i][1]);
$re[$key[$i]] = $value;
$str_temp[$i] = substr($str_temp[$i],strpos($str_temp[$i],$find[$i][1],strpos($str_temp[$i], $find[$i][0])+strlen($find[$i][0]))+strlen($find[$i][1]));
}
}
ksort($re);
if ($ary == true) {
return $re;
}else{
$return = '';
foreach ($re as $value) {
$return .= $value;
}
return $return;
}
}
?>
|