首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >substr act wierd (PHP)

substr act wierd (PHP)
EN

Stack Overflow用户
提问于 2018-01-23 16:10:50
回答 1查看 62关注 0票数 0

首先,我的php知识很低。

我的问题是substr没有像我所知道的那样工作,所以我需要帮助来理解为什么。

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

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

我尝试了一个函数,得到了同样的结果。

我错过了一些东西,我不知道是什么。

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

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

我以前这样做过,它起作用了,但现在不行了:

感谢您抽出时间来

子字符串结果图片:

代码语言:javascript
复制
    <?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>";
        }
    ?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-23 16:23:51

从我对你的语言有限的理解来看,descriere似乎可以翻译成“描述”。您的图片显示了一个已销毁的HTML表,这意味着在描述中必须有HTML (表的)。

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

要消除奇怪的结果,需要在截断代码后关闭代码中所有打开的HTML标记。可以使用以下函数对其进行归档:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48396907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档