从php字符串中删除所有html标签

jim*_*eer 70 php

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

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

但是上面的条目中有html代码,由客户输入.所以它显示:

<p class="Body1"><strong><span style="text-decoration: underline;">Ref no:</span></strong> 30001<strong></stro...
Run Code Online (Sandbox Code Playgroud)

显然没有好处.

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

任何人的想法?

Yog*_*har 123

使用 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) . "..."; ?>
Run Code Online (Sandbox Code Playgroud)

  • @delive 为什么你要先运行 `htmlentities` 然后运行 ​​`strip_tags`?这完全违背了目的。 (2认同)

EM-*_*ons 15

使用PHP的strip_tags()函数.

例如:

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


print($businessDesc);
Run Code Online (Sandbox Code Playgroud)

  • 这将首先取100个字符,然后删除html标签.但我认为OP想先删除html标签,然后删除100个字符. (2认同)

Muh*_*zad 10

从内容中删除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);

 }
Run Code Online (Sandbox Code Playgroud)

输出:

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


Max*_*tin 6

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

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

$businessDesc = substr(val,0,110);
Run Code Online (Sandbox Code Playgroud)

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

  • strip_tags在那里,为什么正则表达式? (3认同)
  • 不完全确定,但我认为它不会捕获包含空格的自闭合标签:“&lt;br /&gt;”或“&lt;special /&gt;”。我还认为这没有考虑像“&lt;b&lt;b&gt;&gt;&lt;/&lt;/b&gt;&gt;”这样的黑客行为。 (2认同)
  • 错误。strip_tags清除所有这些。 (2认同)