大家好我对strip_tags函数有疑问。 我有一个这样的HTML文档。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<p>er</p>
</body>
</html>
和这个php脚本
<?php
$file = "ht.html";
$fp = fopen($file, "r");
$data = fread($fp, filesize($file));
fclose($fp);
$output = str_replace("\t|\t", "|", $data);
$outputline = explode("\n", $output);
$lexeisline=count($outputline);
for ($i = 0; $i < $lexeisline; $i++){
$outputline[$i]=strip_tags($outputline[$i]);
if (empty($outputline[$i])){
unset($outputline[$i]);
}
}
$outputline = array_values($outputline);
$lexeisline=count($outputline);
echo "<p>";
for ($i = 0; $i < $lexeisline; $i++){
echo ($outputline[$i])."<br />";
}
echo "</p>";
?>
问题是它没有取消设置空变量(从strip_tags返回)和回声这样的东西。以下是否意味着回声空字符串? 任何意见或帮助将非常感激。 Thanx提前
<p>
<br />
<br />
<br />
<br />Untitled Document
<br />
<br />
<br />er
<br />
<br /></p>
@phpmeh
Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] => Untitled Document
[5] =>
[6] =>
[7] => er
[8] =>
)
答案 0 :(得分:2)
你只是为每个人计数和回应。如果你想跳过空,请在你的循环中做这样的事情:
for ($i = 0; $i < $lexeisline; $i++){
if(!empty($outputline[$i]) echo ($outputline[$i])."<br />";
}
希望我理解正确。
答案 1 :(得分:1)
对于你正在做的事情,这段代码似乎令人难以置信的巴洛克式。以下代码是否满足您的需求?
$lines = file('ht.html');
$lines = array_map('strip_tags', $lines);
$lines = array_map('trim', $lines);
$lines = array_filter($lines);
echo "<p>\n", implode("<br />\n", $lines), "\n</p>";
答案 2 :(得分:0)
我可能错了......但是......
当你爆炸这些线时,我很确定它们有一个隐含的/ n,这意味着它们永远不会是空的。另一种选择虽然有点慢,但却是:
strlen( $outline[$i] ) > 0