ホームページ  >  記事  >  バックエンド開発  >  PHPインターセプト文字列関数(中国語文字列)(1/2)_PHPチュートリアル

PHPインターセプト文字列関数(中国語文字列)(1/2)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:57:54894ブラウズ

phpインターセプト文字列関数(中国語文字列) これは、中国語の文字列をサポートする機能です。HTML タグが文字インターセプトに含まれない場合、HTML タグは含まれません。閉じると、プログラムは冗長なタグを自動的に除外します。

phpチュートリアルの文字列関数のインターセプト (中国語の文字列)
これは、中国語文字列をサポートする機能です。html タグが閉じられていない場合、html タグは文字インターセプトに含まれません。 、プログラムは自動的に冗長なタグを除外します。
*/

関数 mysubstr( $str, $length ){

$tagcnt = 0;
$charcnt = 0;
$tag = '';
$maxlen = strlen( $str );
$resultstr = '';
$tagstack = array();

for( $i = 0; $i if( $str[$i] == '<' ){

$resultstr .= $str[$i];

for( $j=$i; $str[$j]!='>'; $j++,$length++){
$tag .= $str[$j];
}
$tagcnt++;
$length++;
$tag .= '>';
                                                // 開始タグの場合はスタックにプッシュし、対応する終了タグの場合はスタックからポップします
If( preg_match('//i', $tag, $r) ){
エコー 'スタックに:', htmlspecialchars ($ r [1]), '& lt;
; array_push($tagstack, $r[1]);
}
elseif( preg_match( '/'.$tagstack[count($tagstack)-1].'/', $tag ) ){
エコー 'スタック外:', htmlspecialchars ($ tagstack [count ($ tagstack) -1]), '& lt;
; array_pop( $tagstack );
}

$tag = '';

続行;
}

$charcnt++;

$resultstr .= $str[$i];
}

echo '


最終結果は次のとおりです:';

//スタックが空の場合は直接戻ります

If(空($tagstack)){
$resultstr;
を返す }
//それ以外の場合は、終了タグなしで開始タグを削除します
他{

while(!empty($tagstack)){

$tag = array_pop($tagstack);

$index = strrpos($resultstr, $tag);

for($i = $index-1; $resultstr[$i] != '>'; $i++){

$resultstr[$i] = '';
}

$resultstr[$i++] = '';


}

$resultstr;を返す

}

}

$sttime = マイクロタイム(true);

$stmem =memory_get_usage();

$str = "a1

b2

c3d4e5

f6g7h8";

echo '処理結果は次のとおりです:


',htmlspecialchars( mysubstr( $str, 18 ) ),'
';

echo "メモリ使用量:",(memory_get_usage()-$stmem),'
';

echo "アルゴリズム実行時間 (microtime):",(microtime(true)-$sttime),'
';

//方法 2

/

**
* 関数名 html_substr
* 機能: HTML 文字列から指定された長さの文字列をインターセプトします。HTML タグは含まれません
*パラメータ
* $str インターセプトされる文字列
* $len はインターセプトされる長さです
* $mode 一致しないタグの処理方法 0 削除 (デフォルト)、1 完了
* インターセプトされた文字列を返します
*説明
* マルチバイト文字は考慮されず、バイトのみがカウント単位として使用されます
※単独で存在できるマークは考慮されません
**/
関数 html_substr($str, $len, $mode=0) {
$ar= preg_split('/(|<[^>]*>)/s', $str, -1, preg_split_delim_capture);
foreach($ar as $k => $v) {
If($v{0} != '<') {
$len = $len - strlen($v);
If($len < 0) $ar[$k] = substr($v, 0, $len);
}else $ar[$k] = strto lower($v);
If($len <= 0) ブレーク;
}
$ar = array_slice($ar, 0, $k+1);
$len = count($ar);
foreach($ar as $k=>$v) {
If($v{0} == '<' && $v[1] != '/') {
$ch = str_replace('<', ' for($i=$k+1; $i<$len && $ar[$i]!=$ch; $i++);
If($i == $len)
if($mode)
$ar[$len] = $ch . その他
$ar[$k] = '';
}
}
return join('', $ar);
}
$str = "123abc456def789";

エコー '';</p> <p> echo html_substr($str, 5) .php_eol;<br> echo html_substr($str, 5, 1);<br> </p> </blockquote> 1 2 <p> </p> <p align="left"></p> <div style="display:none;">http://www.bkjia.com/PHPjc/632042.html<span id="url" itemprop="url"></span>www.bkjia.com<span id="indexUrl" itemprop="indexUrl"></span>tru​​e<span id="isOriginal" itemprop="isOriginal"></span>http://www.bkjia.com/PHPjc/632042.html<span id="isBasedOnUrl" itemprop="isBasedOnUrl"></span>技術記事<span id="genre" itemprop="genre"></span> PHP インターセプト文字列関数 (中国語文字列) これは、中国語文字列をサポートする関数です。HTML、中国語、西洋のコンテンツなどをインターセプトできます。 <span id="description" itemprop="description"></span> </div></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="php ajax の例と ajax チュートリアル_PHP チュートリアル" href="https://m.php.cn/ja/faq/298354.html">php ajax の例と ajax チュートリアル_PHP チュートリアル</a></span><span>次の記事:<a class="dBlack" title="php ajax の例と ajax チュートリアル_PHP チュートリアル" href="https://m.php.cn/ja/faq/298356.html">php ajax の例と ajax チュートリアル_PHP チュートリアル</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="https://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ul class="nphpXgwzList"><li><b></b><a href="https://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/2.html" title="正規表現内のすべての式記号 (概要)" class="aBlack">正規表現内のすべての式記号 (概要)</a><div class="clear"></div></li></ul></div></div><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p></div><div class="footermid"><a href="https://m.php.cn/ja/about/us.html">私たちについて</a><a href="https://m.php.cn/ja/about/disclaimer.html">免責事項</a><a href="https://m.php.cn/ja/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>