php 在一段文本中找到<body 标签。输出 中“<”的位置。
<?php
//一段文本中找到<body 标签。输出<body> 中“<”的位置。
ini_set("max_execution_time", "1200");//防止写错,卡死。及时退出。
$content = "<bod <
body >";//要查找的目标文本。此处有换行\n
// strlen($content);
//如果查找<body 成功了,返回值就是结果。
if ( strpos("$content","<body") ) {
echo $i=strpos("$content","<body");
}
//如果查找<body 无结果,
//(情况1)可能是因为目标文本中body标签含空格,换行之类的字符。
//(情况2)也可能是根本没有body标签
//对情况1),先跳过空格换行等,看后面的字符是不是body,如果是,此次查询就是对的。
// 如果不是,就重新查询,且定义初始查询位置为上次查询+1,直到有结果。
//对情况2 ,就是控制循环条件,文件结束就要结束循环。
else{
$i= strpos("$content","<");//因为查询<body无结果,就不要查询<body了,而是<.
$k=$j = $i+1;
while ($k<strlen($content)) {
while ($content[$j] == " "
|| $content[$j] == "\t"
|| $content[$j] == "\r"
|| $content[$j] == "\n"){
$j++;
}
if ($content[$j] == "b"
&& $content[++$j] == "o"
&& $content[++$j] == "d"
&& $content[++$j] == "y"){
echo $i;//此处是正常结束的位置。
break;//找到了,及时结束。
}
else {
$i = strpos("$content","<",$k);
$k=$j = $i+1;
}
//echo $j;
}//end while
}//end else
?>