从 HTML 创建纯文本 [重复]
Posted
技术标签:
【中文标题】从 HTML 创建纯文本 [重复]【英文标题】:Create plain text from HTML [duplicate] 【发布时间】:2014-05-14 18:34:06 【问题描述】:我正在开发一个使用 php 将 html 转换为纯文本版本的函数。我尝试使用strip_tags()
如下,
$html='<style type="text/css">
@media only screen and (max-width: 480px)
.message_mobile
width: 100% !important;
</style>
<p class="message_mobile"> sample Text</p>';
$plain_text =strip_tags($html);
echo $plain_text;
但它会产生类似的输出,
@media only screen and (max-width: 480px)
.message_mobile
width: 100% !important;
sample Text
但我不需要<style>
标签内的内容。如何做到这一点?
我还有一个问题,当我尝试用桌子剥离标签时,它会产生不需要的线刹车。如何解决这些问题?
有没有什么好的方法可以从 HTML 创建纯文本?
【问题讨论】:
***.com/questions/1884550/…请查看这个 @Jenz 在 html2text 的帮助下,我的问题解决了。谢谢 【参考方案1】:使用此功能:
<?php
function strip_html_tags($str)
$str = preg_replace('/(<|>)\12/is', '', $str);
$str = preg_replace(
array(// Remove invisible content
'@<head[^>]*?>.*?</head>@siu',
'@<style[^>]*?>.*?</style>@siu',
'@<script[^>]*?.*?</script>@siu',
'@<noscript[^>]*?.*?</noscript>@siu',
),
"", //replace above with nothing
$str );
$str = replaceWhitespace($str);
$str = strip_tags($str);
return $str;
//function strip_html_tags ENDS
//To replace all types of whitespace with a single space
function replaceWhitespace($str)
$result = $str;
foreach (array(
" ", " \t", " \r", " \n",
"\t\t", "\t ", "\t\r", "\t\n",
"\r\r", "\r ", "\r\t", "\r\n",
"\n\n", "\n ", "\n\t", "\n\r",
) as $replacement)
$result = str_replace($replacement, $replacement[0], $result);
return $str !== $result ? replaceWhitespace($result) : $result;
$html='<style type="text/css">
@media only screen and (max-width: 480px)
.message_mobile
width: 100% !important;
</style>
<p class="message_mobile"> sample Text</p>';
$plain_text = strip_html_tags($html);
echo $plain_text;
【讨论】:
【参考方案2】:您要查找的函数是htmlspecialchars。
这段代码:
<?php
$htmltag = '
<style type="text/css">
@media only screen and (max-width: 480px)
.message_mobile
width: 100% !important;
</style>
<p class="message_mobile"> sample Text</p>';
echo "<pre>".nl2br(htmlspecialchars($htmltag))."</pre>";
?>
将在您的网站上创建此输出:
<style type="text/css">
@media only screen and (max-width: 480px)
.message_mobile
width: 100% !important;
</style>
<p class="message_mobile"> sample Text</p>
【讨论】:
【参考方案3】:您可以使用类从 HTML 创建纯文本。
访问此链接可能会对您有所帮助。 Converting HTML to plain text in PHP for e-mail
类:http://www.howtocreate.co.uk/php/html2texthowto.html
试试这个,对我有帮助
http://code.google.com/p/iaml/source/browse/trunk/org.openiaml.model.runtime/src/include/html2text
【讨论】:
以上是关于从 HTML 创建纯文本 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP 从纯文本和 HTML 文本的混合创建 PDF [重复]