90

我想显示数据库条目的前 110 个字符。到目前为止很容易:

<?php echo substr($row_get_Business['business_description'],0,110) . "..."; ?>

但是上面的条目中包含客户端输入的 html 代码。所以它显示:

<p class="Body1"><strong><span style="text-decoration: underline;">Ref no:</span></strong> 30001<strong></stro...

显然不好。

我只想删除所有 html 代码,所以我需要从 db 条目中删除 < 和 > 之间的所有内容,然后显示前 100 个字符。

有什么想法吗?

4

9 回答 9

160

利用strip_tags

$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);   //output Test paragraph. Other text

<?php echo substr(strip_tags($row_get_Business['business_description']),0,110) . "..."; ?>
于 2013-02-04T09:48:55.017 回答
19

使用 PHP 的strip_tags() 函数

例如:

$businessDesc = strip_tags($row_get_Business['business_description']);
$businessDesc = substr($businessDesc, 0, 110);


print($businessDesc);
于 2013-02-04T09:48:40.600 回答
13

从带有内容的 PHP 字符串中删除所有 HTML 标记!

假设您的字符串包含锚标记,并且您想删除带有内容的此标记,那么此方法将很有帮助。

$srting = '<a title="" href="/index.html"><b>Some Text</b></a>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.';

echo strip_tags_content($srting);

function strip_tags_content($text) {

    return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text);
    
 }

输出:

Lorem Ipsum 只是印刷和排版行业的虚拟文本。

于 2016-09-04T18:26:36.357 回答
7

使用这个正则表达式:/<[^<]+?>/g

$val = preg_replace('/<[^<]+?>/g', ' ', $row_get_Business['business_description']);

$businessDesc = substr(val,0,110);

从你的例子应该留下:Ref no: 30001

于 2013-02-04T09:50:44.530 回答
2

对我来说这是最好的解决方案。

function strip_tags_content($string) { 
    // ----- remove HTML TAGs ----- 
    $string = preg_replace ('/<[^>]*>/', ' ', $string); 
    // ----- remove control characters ----- 
    $string = str_replace("\r", '', $string);
    $string = str_replace("\n", ' ', $string);
    $string = str_replace("\t", ' ', $string);
    // ----- remove multiple spaces ----- 
    $string = trim(preg_replace('/ {2,}/', ' ', $string));
    return $string; 

}
于 2019-08-07T08:08:57.653 回答
0

从 HTML 标签中去除字符串:

<?php
echo strip_tags("Hello <b>world!</b>");
?>

从 HTML 标签中去除字符串,但允许使用标签:

<?php
         echo strip_tags("Hello <b><i>world!</i></b>","<i>");
?>
于 2021-04-18T09:53:24.540 回答
0

<?php $data = "<div><p>Welcome to my PHP class, we are glad you are here</p></div>"; echo strip_tags($data); ?>

或者,如果您有来自数据库的内容;

<?php $data = strip_tags($get_row['description']); ?> <?=substr($data, 0, 100) ?><?php if(strlen($data) > 100) { ?>...<?php } ?>

于 2020-09-29T09:39:34.040 回答
0

In laravel you can use following syntax

 @php
   $description='<p>Rolling coverage</p><ul><li><a href="http://xys.com">Brexit deal: May admits she would have </a><br></li></ul></p>'
 @endphp
 {{  strip_tags($description)}}
于 2018-12-10T17:18:32.023 回答
0
$string = <p>Awesome</p><b> Website</b><i> by Narayan</i>. Thanks for visiting enter code here;
$tags = array("p", "i");

echo preg_replace('#<(' . implode( '|', $tags) . ')(?:[^>]+)?>.*?</\1>#s', '', $string);

尝试这个

于 2020-12-05T12:28:49.940 回答