我正在使用PHP,MySQL和HTML开发一个网站。
在数据库中,其中一个字段是可能包含HTML标记的文本,例如<b>
或<i>
。
我的问题是,在网站的某个特定部分(搜索部分),我只想显示该字段的“摘要”/子字符串。
问题是:当我在页面中显示此字段的一部分时,未关闭的标记会影响页面其余部分的显示方式。
有两件事可以解决这个问题:
请注意,第一个选项会好得多。
答案 0 :(得分:2)
在向用户显示摘要之前,您可以使用strip_tags。
答案 1 :(得分:0)
如果字符串xhtml兼容?如果是,您可以尝试滚动自己的函数来匹配标记,并在结尾处为它们自动附加结束标记。
使用正则表达式查找字符串中的所有开始和结束标记,然后遍历标记。如果遇到开始标记(没有“/”),则将其推入堆栈。如果遇到关闭,则弹出堆栈的顶部。
当处理完所有标签后,需要关闭堆栈中剩余的标签。只需将它们一次弹出一个,然后将结尾附加到字符串的后面。
答案 2 :(得分:0)
我会这样做::
从DB中获取字符串的函数将返回var $ return
$tag = strip_tags($return); // will remove tags if exist
print '<p>'$tag'</p>;
答案 3 :(得分:0)
易于使用的preg替换功能
$search = array(
"'<script[^>]*?>.*?</script>'si", // strip out javascript
"'<[\/\!]*?[^<>]*?>'si", // strip out html tags
"'([\r\n])[\s]+'", // strip out white space
"'&(quot|#34|#034|#x22);'i", // replace html entities
"'&(amp|#38|#038|#x26);'i", // added hexadecimal values
"'&(lt|#60|#060|#x3c);'i",
"'&(gt|#62|#062|#x3e);'i",
"'&(nbsp|#160|#xa0);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'&(reg|#174);'i",
"'&(deg|#176);'i",
"'&(#39|#039|#x27);'",
"'&(euro|#8364);'i", // europe
"'&a(uml|UML);'", // german
"'&o(uml|UML);'",
"'&u(uml|UML);'",
"'&A(uml|UML);'",
"'&O(uml|UML);'",
"'&U(uml|UML);'",
"'ß'i",
);
$replace = array(
"",
"",
"\\1",
"\"",
"&",
"<",
">",
" ",
chr(161),
chr(162),
chr(163),
chr(169),
chr(174),
chr(176),
chr(39),
chr(128),
"ä",
"ö",
"ü",
"Ä",
"Ö",
"Ü",
"ß",
);
$text = preg_replace($search,$replace,$yourtextasstring);
echo $text;
使用此选项并将$ yourtextasstring更改为您的字符串,其中包含html text或css
让我们说 代码:$ yourtextasstring =“带有html标签的文本1”;
如果你在preg替换之前放置它 它会显示结果=“1”没有标签