substr act wierd(PHP)

时间:2018-01-23 08:10:50

标签: php substr

首先,我的PHP知识很低。

我的问题是substr不能正常工作,所以我需要帮助来理解原因。

我删除了style.css并得到了相同的结果(ofc没有样式)。

这里是我得到的代码和结果图片。

我尝试使用一个函数,我得到相同的结果。

我想念一些东西而且我不知道是什么。

我从php中删除<tr> <td>并尝试使用html但我得到的结果相同。

我想要的只是显示$res['descriere']的前100个字符,当我尝试查看它以显示所有字符时。

我之前做过这个并且它有效但是现在它没有:(

感谢您的时间

substr结果图:

    <?php

$result = mysqli_query($mysqli, "SELECT * FROM products WHERE login_id=".$_SESSION['dep_id']." ORDER BY id DESC");
    while($res = mysqli_fetch_array($result)) {        
        echo "<tr>";
        echo "<td>".$res['trn_date']."</td>"; 
        echo "<td>".$res['name']."</td>";
        echo "<td>".$res['locatia']."</td>";
        echo "<td>".$res['canal_primire']."</td>"; 
        echo "<td>".$res['intemeiata']."</td>";
        echo "<td>".$res['domeniu_vizat']."</td>";
        echo "<td>".substr($res['descriere'],0,100)."</td>";

        echo "<td><a href=\"edit.php?id=$res[id]\">Editați</a> | <a href=\"delete.php?id=$res[id]\" onClick=\"return confirm('Ești sigur că vrei să ștergi?')\">Șterge</a>| <a href=\"view_id.php?id=$res[id]\">Vizualizați</a></td>";        
   echo "</tr>";
        }
    ?>

1 个答案:

答案 0 :(得分:0)

根据我对您的语言的有限理解,descriere似乎转化为&#34;描述&#34;。你的图片显示了一个被破坏的HTML表格,这意味着在desctiption中必须有HTML(表格)。

您基本上是在您的表格中打印HTML表格的子字符串。由于内部表不是有效的HTML,浏览器会尝试对它有所了解。这就是你得到的。

要消除奇怪的结果,您需要在截断代码后关闭代码中的所有打开的HTML标记。这可以通过以下功能实现:

function closetags($html) {
    preg_match_all('#<(?!meta|img|br|hr|input\b)\b([a-z]+)(?: .*)?(?<![/|/ ])>#iU', $html, $result);
    $openedtags = $result[1];
    preg_match_all('#</([a-z]+)>#iU', $html, $result);
    $closedtags = $result[1];
    $len_opened = count($openedtags);
    if (count($closedtags) == $len_opened) {
        return $html;
    }
    $openedtags = array_reverse($openedtags);
    for ($i=0; $i < $len_opened; $i++) {
        if (!in_array($openedtags[$i], $closedtags)) {
            $html .= '</'.$openedtags[$i].'>';
        } else {
            unset($closedtags[array_search($openedtags[$i], $closedtags)]);
        }
    }
    return $html;
} 

来源:Close open HTML tags in a string