如何使用PHP拆分长字符串?
我目前正在研究拆分一个可能包含HTML特征的非常长的字符串 例如:如何使用PHP拆分长字符串?,php,Php,我目前正在研究拆分一个可能包含HTML特征的非常长的字符串 例如: Thiiiissssaaaveryyyylonnngggstringgg 为此,我在过去使用过此功能: function split($sString, $iCount = 75) { $text = $sString; $new_text = ''; $text_1 = explode('>',$text); $sizeof = sizeof($text_1); f
Thiiiissssaaaveryyyylonnngggstringgg
为此,我在过去使用过此功能:
function split($sString, $iCount = 75)
{
$text = $sString;
$new_text = '';
$text_1 = explode('>',$text);
$sizeof = sizeof($text_1);
for ($i=0; $i<$sizeof; ++$i) {
$text_2 = explode('<',$text_1[$i]);
if (!empty($text_2[0])) {
$new_text .= preg_replace('#([^\n\r .]{'. $iCount .'})#iu', '\\1 ', $text_2[0]);
}
if (!empty($text_2[1])) {
$new_text .= '<' . $text_2[1] . '>';
}
}
return $new_text; }
函数拆分($sString,$iCount=75)
{
$text=$sString;
$new_text='';
$text_1=分解('>',$text);
$sizeof=sizeof($text_1);
对于($i=0;$i请考虑改用内置函数?我使用函数在FireStats中拆分字符串
您可能可以脱离上下文使用它。请注意,它正在调用一些其他函数。如果愿意,您可以跳过utf8检查。摆脱这种复杂性,使用a来提取纯文本
//Dump contents (without tags) from HTML
$pageText = file_get_html('http://www.google.com/')->plaintext;
echo "Length is: " . strlen($pageText);
如果您担心对的UTF-8支持,那么您需要:
function utf8_wordwrap($str, $width = 75, $break = "\n") // wordwrap() with utf-8 support {
$str = preg_split('#[\s\n\r]+#', $str);
$len = 0;
foreach ($str as $val) {
$val .= ' ';
$tmp = mb_strlen($val, 'utf-8');
$len += $tmp;
if ($len >= $width) {
$return .= $break . $val;
$len = $tmp;
}
else {
$return .= $val;
}
}
return $return;
}
资料来源:
至于您对代码点的问题-您可能想看看,我认为它将代码点(例如,ß
)转换为它们所代表的字符。您需要给它一个字符集,以便它知道223的含义(因为“223”的含义取决于字符集) WordWrp的问题是,它可以在UTF8宽字符的中间中断线(渲染字符串无效UTF8)或者在像NSBP这样的HTML元素的中间,弄乱它。谢谢“HTMLIN TyType解码”的提示。.我使用了该功能,并将其包含在我正在进行的工作中,它似乎工作得非常完美。再次感谢!
function utf8_wordwrap($str, $width = 75, $break = "\n") // wordwrap() with utf-8 support {
$str = preg_split('#[\s\n\r]+#', $str);
$len = 0;
foreach ($str as $val) {
$val .= ' ';
$tmp = mb_strlen($val, 'utf-8');
$len += $tmp;
if ($len >= $width) {
$return .= $break . $val;
$len = $tmp;
}
else {
$return .= $val;
}
}
return $return;
}