0

みなさん、こんにちは。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から返される)の設定を解除せず、次のようなものをエコーすることです。次は、空の文字列をエコーすることを意味しますか?ご意見やご協力をいただければ幸いです。よろしくお願いします

<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] => 
    )
4

3 に答える 3

2

それぞれを数えてエコーしているだけです。空をスキップしたい場合は、ループで次のようにします。

for ($i = 0; $i < $lexeisline; $i++){
if(!empty($outputline[$i]) echo ($outputline[$i])."<br />";
}

私があなたを正しく理解したことを願っています。

于 2011-12-01T00:54:59.177 に答える
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>";
于 2011-12-01T01:46:55.333 に答える
0

私はおそらく間違っています...しかし...

これらの行を分解すると、暗黙の/ nが含まれていると確信しています。これは、これらの行が空になることはないことを意味します。少し遅いですが、別の方法は次のようになります。

 strlen( $outline[$i] ) > 0 
于 2011-12-01T01:03:54.733 に答える