php массив strip_tags и unset - PullRequest
       28

php массив strip_tags и unset

0 голосов
/ 01 декабря 2011

Привет всем, у меня есть вопрос, касающийся функции 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] => 
    )

Ответы [ 3 ]

2 голосов
/ 01 декабря 2011

Ты просто считаешь и повторяешь для каждого.Если вы хотите пропустить пустое, сделайте что-то подобное в своем цикле:

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

Надеюсь, я вас правильно понял.

1 голос
/ 01 декабря 2011

Этот код кажется невероятно барочным для того, что вы делаете. Следующий код делает то, что вам нужно?

$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>";
0 голосов
/ 01 декабря 2011

Я, вероятно, ошибаюсь ... но ...

Когда вы взрываете эти строки, я почти уверен, что у них есть неявное / n, которое означает, что они никогда не пусты.Альтернатива, хотя и немного медленнее, будет:

 strlen( $outline[$i] ) > 0 
...