php
  • javascript
  • regex
  • 2011-07-08 47 views 0 likes 
    0

    我得到了一個HTML字符串,從此我想將一些特殊的標籤轉換爲其他東西。我需要這個TinyMCE插件。我試圖改變WordPress的wpgallery插件。JavaScript正則表達式替換HTML錨點

    例如:這些是HTML字符串

    <a href="http://www.yahoo.com">Yahoo</a> 
    <a href="http://www.google.com">Google</a> 
    <a href="#" rel='special' title='link cat_id="4" content_id="5" content_slug="Slug 1"'>Some where else</a> 
    

    在這裏,我必須要找到特殊的環節之一,其轉換爲從它別的東西的標題值 像:

    {link cat_id="4" content_id="5" content_slug="Slug 1"} 
    

    我需要回報值這樣插入到MySQL中

    <a href="http://www.yahoo.com">Yahoo</a> 
    <a href="http://www.google.com">Google</a> 
    {link cat_id="4" content_id="5" content_slug="Slug 1"} 
    

    我試過了

    function getAttr(s, n) { 
          n = new RegExp(n + '="([^"]+)"', 'g').exec(s); 
          return n ? tinymce.DOM.decode(n[1]) : ''; 
         }; 
    
    return co.replace(/[^<]*(<a href="([^"]+)">([^<]+)<\/a>)/g, function(a,im) { 
    var cls = getAttr(im, 'rel'); 
        if (cls.indexOf('special') != -1) 
         return '{'+tinymce.trim(getAttr(im, 'title'))+'}'; 
    
        return a; 
    }); 
    

    /[^<]*(<a href="([^"]+)">([^<]+)<\/a>)/g 
    

    rel EQ爲 '特殊',但所有的人找到標籤。

    +0

    試試這個:[^ <] *(([^ <]+)<\/a>) – Hgeg

    +0

    Thank you that工作:) – orhan

    +0

    我需要這個正則表達式爲tinymce plugin.This適用於onBeforeSetContent但不能與onPostProcess。你有什麼想法嗎? – orhan

    回答

    2

    你可能想看看DOMDocument和相關的類。它們在解析HTML方面比自制的正則表達式解決方案要好得多。

    您可以使用您提供的標記創建DOM文檔,執行getElementsByTagName以獲取所有超鏈接,使用特殊值掃描它們的rel屬性屬性,然後採取適當的操作。

    相關問題