您需要一个 HTML Paser,找到并读出纯文本并选择子字符串,这里有一个示例DOMXpath
:
$doc = DOMDocument::loadHTML($html);
$xp = new DOMXPath($doc);
$chars50 = $xp->evaluate('substring(normalize-space(//body),1,50)');
演示:
字符串(50)"This economy car is great value for money and with"
请注意,您将在此处获得一个 UTF-8 编码的字符串。您也可以使用正则表达式(这可能会帮助您减少 words)自己执行此操作,例如:
# load text from HTML
$text = DOMDocument::loadHTML($html)->getElementsByTagName('body')->item(0)->nodeValue;
# normalize HTML whitspace
$text = trim(preg_replace('/\s{1,}/u', ' ', $text));
# obtain the substring (here: UTF-8 safe operation, see as well mb_substr)
$chars50 = preg_replace('/^(.{0,50}).*$/u', '$1', $text);
演示
如果您使用strip_tags
而不是 HTML 解析器,则需要自己处理不同的编码。由于原始字符串已经具有表示 unicode 替换字符的问号,我会说您已经处理了 borked 数据,因此最好使用重新呈现的库DOMDocument
而strip_tags
不是不安全的库(请参阅 PHP 上的警告手册页)。