茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    PHP實(shí)現(xiàn)HTML標(biāo)簽自動補(bǔ)全代碼
    來源:易賢網(wǎng) 閱讀:2743 次 日期:2014-08-11 16:21:22
    溫馨提示:易賢網(wǎng)小編為您整理了“PHP實(shí)現(xiàn)HTML標(biāo)簽自動補(bǔ)全代碼”,方便廣大網(wǎng)友查閱!

    般情況下先用PHP的 strip_tags 函數(shù)去掉所有html標(biāo)簽,再去掉空格等,然后再用substr或者自己實(shí)現(xiàn)的cn_substr函數(shù)來實(shí)現(xiàn)截取。因?yàn)槿绻幌热サ鬶tml標(biāo)簽,直接截取出來的字符串就會有沒有閉合的標(biāo)簽出現(xiàn),有時(shí)甚至?xí)厝≡跇?biāo)簽上面比如

    代碼如下:

    </di ...

    今天遇到一個(gè)內(nèi)容翻頁截取問題: 正文是用富文本編輯器寫入的,編輯器上有個(gè)分頁按鈕,點(diǎn)擊之后就往當(dāng)前光標(biāo)位置插入一個(gè)藍(lán)色的

    代碼如下:

    <hr />

    橫線。然后php直接存入數(shù)據(jù)庫。顯示的時(shí)候,用 explode 函數(shù)根據(jù)這個(gè)

    代碼如下:

    <hr />

    標(biāo)記來分成一個(gè)數(shù)組,然后根據(jù)當(dāng)前頁碼來顯示某個(gè)片段。 但是有個(gè)嚴(yán)重的問題,比如富文本編輯器寫入:

    代碼如下:

    div style="text-align:center">

    content of page 1

    <hr />

    page 2 content

    </div>

    如果用explode函數(shù)分開后,

    第一頁的內(nèi)容是

    代碼如下:

    <div style="text-align:center">

    content of page 1

    第二頁的內(nèi)容是:

    代碼如下:

    page 2 content

    </div>

    這樣就產(chǎn)生了沒有閉合的標(biāo)簽,直接顯示到頁面上面就會破壞頁面布局。。。

    想了很久,也找了網(wǎng)上很多 closetag函數(shù)。但是發(fā)現(xiàn)都針對第一頁那種沒有閉合的標(biāo)簽的閉合。對于第二種沒有開頭的標(biāo)簽就沒辦法了。

    針對第一頁那種沒有閉合的標(biāo)簽的閉合的closetags方法是:

    代碼如下:

    function closetags($html) {

    // 不需要補(bǔ)全的標(biāo)簽

    $arr_single_tags = array('meta', 'img', 'br', 'link', 'area');

    // 匹配開始標(biāo)簽

    preg_match_all('#<([a-z]+)(?: .*)?(?<![/|/ ])>#iU', $html, $result);

    $openedtags = $result[1];

    // 匹配關(guān)閉標(biāo)簽

    preg_match_all('#</([a-z]+)>#iU', $html, $result);

    $closedtags = $result[1];

    // 計(jì)算關(guān)閉開啟標(biāo)簽數(shù)量,如果相同就返回html數(shù)據(jù)

    $len_opened = count($openedtags);

    if (count($closedtags) == $len_opened) {

    return $html;

    }

    // 把排序數(shù)組,將最后一個(gè)開啟的標(biāo)簽放在最前面

    $openedtags = array_reverse($openedtags);

    // 遍歷開啟標(biāo)簽數(shù)組

    for ($i = 0; $i < $len_opened; $i++) {

    // 如果需要補(bǔ)全的標(biāo)簽

    if (!in_array($openedtags[$i], $arr_single_tags)) {

    // 如果這個(gè)標(biāo)簽不在關(guān)閉的標(biāo)簽中

    if (!in_array($openedtags[$i], $closedtags)) {

    // 直接補(bǔ)全閉合標(biāo)簽

    $html .= '</' . $openedtags[$i] . '>';

    } else {

    unset($closedtags[array_search($openedtags[$i], $closedtags)]);

    }

    }

    }

    return $html;

    }

    后來想了一個(gè)辦法,利用瀏覽器自己的html解釋引擎來幫助補(bǔ)全有問題的html片段。具體做法如下:

    代碼如下:

    <script>

    var div = document.createElement('div');

    div.innerHTML ='<?php echo ("<div>這里是被截取的html片段");?>';

    document.write(div.innerHTML);

    </script>

    原理就是先把html片段寫入到一個(gè)空的div里面,然后再從這個(gè)div里面讀取出來。別看寫入和讀取的屬性都是innerHTML,寫入的內(nèi)容和得到的內(nèi)容是不一樣的噢。如果寫入不完整的html片段,瀏覽器會自動補(bǔ)全修正。讀取出來的時(shí)候就已經(jīng)是完整的html dom 片段了。

    可是這樣有個(gè)弊端,由于是Js加載內(nèi)容信息的,會對搜索引擎優(yōu)化不好。

    更多信息請查看IT技術(shù)專欄

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:PHP實(shí)現(xiàn)HTML標(biāo)簽自動補(bǔ)全代碼
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026國考·省考課程試聽報(bào)名

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)