HTML 文字列をインターセプトし、php で HTML タグを自動的に補完する方法、インターセプトと完了_PHP チュートリアル
HTML文字列をインターセプトしてHTMLタグを自動的に補完するphpメソッド、インターセプトして補完します
この記事の例では、PHP を使用して HTML 文字列をインターセプトし、HTML タグを自動的に補完する方法を説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
これは、php を使用して HTML 文字列をインターセプトし、HTML タグを自動的に補完する方法の概要です。実際の開発では、最初に HTML タグを直接、strip_tags で除外することがよくありますが、プレーンテキストのみが残り、可読性が非常に高くなります。以下は次のコードを含む関数です:
* HTML をインターセプトし、自動的に完成して閉じます
* @param $html
* @param $length
* @param $end
*/
関数 subHtml($html,$length) {
$結果 = ''; $tagStack = 配列(); $len = 0;
$contents = preg_split("~(<[^>]+?>)~si",$html, -1,PREG_SPLIT_NO_EMPTY| PREG_SPLIT_DELIM_CAPTURE); foreach($contentsを$tagとして)
{
if (trim($tag)=="") 続行します。 if(preg_match("~]*?/>~si",$tag)){
$結果 .= $タグ
}else if(preg_match("~([a-z0-9]+)[^/>]*?>~si",$tag,$match)){
if($tagStack[count($tagStack)-1] == $match[1]){
array_pop($tagStack); $結果 .= $タグ
}
}else if(preg_match("~<([a-z0-9]+)[^/>]*?>~si",$tag,$match)){
array_push($tagStack,$match[1]); $結果 .= $タグ
}else if(preg_match("~~si",$tag)){
$結果 .= $タグ
}その他{
if($len + mstrlen($tag) < $length){
$結果 .= $タグ
$len += mstrlen($tag); }その他{
$str = msubstr($tag,0,$length-$len+1); $結果 .= $str; 休憩
}
}
}
while(!emptyempty($tagStack)){
$result .= ''.array_pop($tagStack).'>'; }
$結果を返す
}
/**
* 中国語の文字列をインターセプトします
* @param $string 文字列
* @param $start 開始位置
* @param $length 長さ
* @param $charset エンコーディング
* @param $dot 追加文字列
*/
関数 msubstr($string, $start, $length,$dot='',$charset = 'UTF-8') {
$string = str_replace(array('&', '"', '<', '>',' '), array('&', '"', '<', '>',' ')、$string); if(strlen($string) $string を返します。 }
if(strto lower($charset) == 'utf-8') {
$n = $tn = $noc = 0; while($n < strlen($string)) {
$t = ord($string[$n]); if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
$tn = 1
; elseif(194 <= $t && $t <= 223) {
$tn = 2; $n += 2; elseif(224 <= $t && $t <= 239) {
$tn = 3; $n += 3; elseif(240 <= $t && $t <= 247) {
$tn = 4; $n += 4; elseif(248 <= $t && $t <= 251) {
$tn = 5; $n += 5; elseif($t == 252 || $t == 253) {
$tn = 6; $n += 6; } その他 {
$n++
}
$noc++
if($noc >= $length) {
休憩
}
}
if($noc > $length) {
$n -= $tn; }
$strcut = substr($string, 0, $n); } その他 {
for($i = 0; $i < $length; $i++) {
$strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i]; }
}
$strcut.$dot を返す
}
/**
* 中国語と英語を含む文字列の長さを取得します。
*/
関数 mstrlen($str,$charset = 'UTF-8'){
if (function_exists('mb_substr')) {
$length=mb_strlen($str,$charset); elseif (function_exists('iconv_substr')) {
$length=iconv_strlen($str,$charset); } その他 {
preg_match_all("/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0 [x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/", $text, $ar);
$length=count($ar[0]); }
$length を返す
}
例、コードは次のとおりです:
コードをコピーします
コードは次のとおりです:
* @param インターセプトの数 $num
* @param $more を追加する必要がありますか
* @return インターセプト文字列
*/
関数 phpos_chsubstr_ahtml($str,$num,$more=false)
{
$leng=strlen($str); If($num>=$leng)
$str を返します。 $word=0; $i=0; $i=0; /**文字列ポインタ **/
$stag=array(array()); /**HTMLを開始するフラグを格納します **/
$etag=array(array()); /**HTML を終了するフラグを格納します **/
$sp = 0; $ep = 0; while($word!=$num)
{
If(ord($str[$i])>128)
//$re.=substr($str,$i,3); $i+=3; $word++; else if ($str[$i]=='<')
If ($str[$i+1] == '!')
$i++; 続けてください。
If ($str[$i+1]=='/')
$ptag=&$etag; $k=&$ep; $i+=2; その他 $ptag=&$stag; $i+=1; $k=&$sp;
for(;$i<$leng;$i++) if ($str[$i] == ' ')
$ptag[$k] = implode('',$ptag[$k]); $k++; 休憩
If ($str[$i] != '>')
$ptag[$k][]=$str[$i];
続く;
}
それ以外
{
$ptag[$k] = implode('',$ptag[$k]);
$k++;
壊す;
}
}
$i++;
続く;
}
それ以外は
{
//$re.=substr($str,$i,1);
$word++;
$i++;
}
}
foreach ($etag を $val として)
{
$key1=array_search($val,$stag);
if ($key1 !== false) unset($stag[$key]);
}
foreach ($stag as $key => $val)
{
if (in_array($val,array('br','img'))) unset($stag[$key1]);
}
array_reverse($stag);
$ends = ''.implode('>',$stag).'>';
$re = substr($str,0,$i).$ends;
if($more) $re.='...';
$re を返します。
}
PHP截取字符列、生成文章摘要、我们在写ブログ時常常必要显示文章前一部、但又怕不如当截断破坏封闭标签為造成整文档结构破坏、代码如下:
グローバル $Briefing_Length;
mb_regex_encoding("UTF-8");
if(mb_strlen($text) $Foremost = mb_substr($text, 0, $length);
$re = "<(/?)
(P|DIV|H1|H2|H3|H4|H5|H6|アドレス|プリ|テーブル|TR|TD|TH|入力|選択|テキストエリア|オブジェクト|A|UL|OL|LI|
BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT|SPAN)[^>]*(>?)";
$Single = "/BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT|BR/i";
$スタック = 配列(); $posStack = 配列();
mb_ereg_search_init($Foremost, $re, 'i');
while($pos = mb_ereg_search_pos()){
$match = mb_ereg_search_getregs();
/* [子に合った定式化]:
$matche[1] : 現在の "<...>" かどうかを示す "/" 文字摩擦は
終わりの部分
$matche[2] : 要素名。
$matche[3] : 右 > 「<...>」摩擦
*/
if($match[1]==""){
$Elem = $match[2];
if(mb_eregi($Single, $Elem) && $match[3] !=""){
続く;
}
ここで説明されている大家向けの php プログラムの設計が役立つことを望みます。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。
