ホームページ > バックエンド開発 > PHPチュートリアル > PHP による HTML 記事のインターセプト_PHP チュートリアル

PHP による HTML 記事のインターセプト_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:53:23
オリジナル
1137 人が閲覧しました

PHPはHTMLコードをインターセプトし、HTMLタグの終了問題を考慮します


/* 概要を生成します
* @param (文字列) $body
*テキスト
* @param (int) $size
* 概要の長さ
* @param (int) $format
* 入力フォーマットID
*/
関数 blog_summary($body, $size, $format = NULL){
$_size = mb_strlen($body, "utf-8');

if($_size
// 入力形式に PHP フィルターがあります
/*
if(!isset($format) && filter_is_php($format)){
$body を返します;
}
*/

$strlen_var = strlen($body);
//HTMLタグは含まれません
if(strpos($body, '<') === false){
mb_substr($body, 0, $size) を返します
}

// 切り捨てフラグ、優先度が含まれます
if($e = strpos($body, '')){
mb_substr($body, 0, $e) を返します。 }

// HTML コードタグ
$html_tag = 0;
// 概要文字列
$summary_string = '';
/**
* 配列は、概要範囲内に表示される HTML タグを記録するために使用されます
* 開始と終了はそれぞれ左と右のキー名で保存されます
* 文字列が

a

の場合、p が閉じていないと仮定します
* 配列は: array('left' => array('h3', 'p', 'b'), 'right' => 'b', 'h3');
* 完全な HTML タグ、 ​*/
$html_array = array('left' => array(), 'right' => array()); for($i = 0; $i If(!$size){
休憩
}

$current_var = substr($body, $i, 1);
If($current_var == '<'){
// HTMLコードが始まります
$html_tag = 1; $html_array_str = ''; }else if($html_tag == 1){
// HTML コードの終わり
If($current_var == '>'){
/**
*
img src="" / > などの先頭と末尾のスペースを削除します。                      */
$html_array_str = トリム($html_array_str);
/**
* 最後の文字が / であるかどうかを確認します。そうであれば、ラベルは閉じられており、記録されません
                     */
If(substr($html_array_str, -1) != '/'){
                                         // 最初の文字が / であるかどうかを判断し、そうであれば、それを正しい単位に置きます
$f = substr($html_array_str, 0, 1); if($f == '/'){
// 取り除く / $html_array['right'][] = str_replace('/', '', $html_array_str); }else if($f != '?'){
// ? であるかどうかを判断し、そうである場合は PHP コードであるため、
をスキップします                                            /**
​​​​​​​ *

など                                                       If(strpos($html_array_str, ' ') !== false){
// 2 つのユニットに分割します。

/**
* * スペースがない場合、文字列全体は

などの HTML タグになります。 * 小文字に変換します
                               */
$html_array['left'][] = strto lower($html_array_str);                                                                        }
}

// 文字列をリセット
$html_array_str = ''; $html_tag = 0; }その他{
/**
* < の間の文字を文字列に合成します
* HTMLタグを抽出するために使用されます
                     */
$html_array_str .= $current_var
}
}その他{
// 非 HTML コードのみがカウントされます
—$サイズ
}

$ord_var_c = ord($body{$i});
スイッチ (真) {
case (($ord_var_c & 0xE0) == 0xC0):
// 2バイト
$summary_string .= substr($body, $i, 2); $i += 1; 休憩
case (($ord_var_c & 0xF0) == 0xE0):

// 3バイト
$summary_string .= substr($body, $i, 3); $i += 2; 休憩
case (($ord_var_c & 0xF8) == 0xF0):
// 4バイト
$summary_string .= substr($body, $i, 4); $i += 3; 休憩
case (($ord_var_c & 0xFC) == 0xF8):
// 5バイト
$summary_string .= substr($body, $i, 5); $i += 4; 休憩
case (($ord_var_c & 0xFE) == 0xFC):
// 6バイト
$summary_string .= substr($body, $i, 6); $i += 5; 休憩
デフォルト:
// 1バイト
$summary_string .= $current_var
}
}

if($html_array['left']){
/**
※左右のHTMLタグを比較し、足りない場合は補完してください
​​*/

/**
※左の順番を入れ替えて、補足の順番はhtmlの出現順と逆にしてください
* * 完成する文字列が

abcabc

abc
の場合 ※補充の順序は


​​*/
$html_array['left'] = array_reverse($html_array['left']);
foreach($html_array['left'] as $index => $tag){
// ラベルが右側に表示されるかどうかを決定します
$key = array_search($tag, $html_array['right']);
If($key !== false){
// 表示されるので、右からユニットを削除します
unset($html_array['right'][$key]); }その他{
//登場していないので、完了する必要があります $summary_string .= ''; }
}
}
$summary_string を返します
}
-->




http://www.bkjia.com/PHPjc/478039.htmlwww.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/478039.html技術記事 PHP は、HTML タグの終了問題を考慮して HTML コードをインターセプトします/* 概要の生成* @param (string) $body * Text* @param (int) $size * 概要の長さ* @param (int) $format * 入力形式.. .
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート