/**
* HTML を取得し、自動的に完成して閉じます
*
* param $html
*
* param $length
*
* param $end
*/
function subHtml($html, $length=50) {
$tagStack = array();
$contents = preg_split("~(< [^>]+?>)~si", $html, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE)
foreach($contents as $tag) {
if (trim($tag); ) == "") 続行
if (preg_match("~<([a-z0-9]+)[^/>]*?/>~si", $tag)) {
$result .= $tag;
} else if (preg_match("~([a-z0-9]+)[^/>>]*?>~si", $tag, $match)) {
if ($tagStack[count($ tagStack)-1] == $match[1]) {
array_pop($tagStack)
$result .= $tag; else if (preg_match("~< ([a-z0-9] +)[^/>]*?>~si", $tag, $match)) {
array_push($tagStack, $match[1]);
$result .= $tag;
} else if (preg_match("~~si", $tag)) {
$result .= $tag; else {
if ($len + mstrlen($tag) < $length) {
$result .= $tag;
$len += mstrlen($tag) } else {
$str($tag, 0, $length - $ len + 1);
$result .= $str;
}
}
} while (!empty($tagStack)) {
$result .= '' . >';
}
return $result;
/**
* 中国語文字列の取得
*
* param $string string
*
* param $start 開始ビット
*
* param $length 長さ
*
* param $charset エンコーディング
*
* param $dot 追加の単語串
*/
function msubstr($string, $start, $length, $dot = '', $charset = 'UTF-8') {
$string = str_replace(array ('&', '"', '<', '>', ' '), array('&', '"', '<', '>' , ' '), $string) ;
if (strlen($string) return $string;
if (strto lower($charset) == 'utf-8') {
$ n = $tn = $noc = 0;
while ($n
$t = ord($string[$n]);
if ($t == 9 || $t == 10 || (32 $tn = 1
} elseif (194 $tn = 2;
$n += 2;
} elseif (224 $n += 3; 240 $tn = 4;
} elseif (248 $tn = 5;
$n += 5;
} elseif ($t == 252 || $t == 253) {
$n += 6;
$noc++;
if ( $noc >= $length) {
break;
}
}
if ($noc > $length) {
$n -= $tn }
$strcut; ($string, 0, $n );
} else {
for($i = 0; $i $strcut .= ord($string[$i]) > 127 ? $string[$i] : $string[$i];
$strcut .
/**
* 中国語と英語を含む文字列の長さを取得します。
*/
関数($str, $charset = ' UTF-8') {
if (function_exists('mb_substr')) {
$length = mb_strlen($str, $charset)
} elseif (function_exists('iconv_substr');
$length = iconv_strlen($str , $charset);
} else {
preg_match_all("/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf] |[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-f][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][ x80-xbf]/", $ text, $ar);
$length = count($ar[0]);
}
return $length;
}
$str = "x< ;tr>1sテスト | 124"; echo subHtml($str); ?>
http://www.bkjia.com/PHPjc/326092.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/326092.html技術記事いくつかのコードを簡単に説明します。 最初の ~([^]+?)~si この通常のルールは、次の内容と一致します。簡単に言えば、すべてのラベルです。 2 番目の ~([a-z0-9]+)[^/]*?/~si この正規表現は...
と一致します
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。 |