php
  • regex
  • preg-replace
  • 2013-06-23 65 views 0 likes 
    0

    我輸入的標籤是這樣的:正則表達式來替換輸入標籤

    <input style="font-size:12px;width:100%" type="text" value="http://www.google.de/ggg"> 
    

    而且想什麼來取代它們。 這是我的嘗試:

    $pattern = '/<input style="font-size:12px;width:100%" type="text" value="(.+?)">/'; 
         echo preg_replace($pattern, "", $content) 
    

    我沒跟成功。

    我的功能錯誤是什麼?也許正則表達式?

    一個替換字符串內所有輸入標籤的函數都可以。

    +0

    這可能是好主意,以正則表達式更普遍,即刪除'$ content'中的所有輸入文本,或者你想用'$ content'做什麼? –

    +0

    你是否嘗試解析/更改html頁面?這個正則表達式看起來很好,在PHP腳本內部的$ content變量上測試... – sinisake

    +0

    @mpapec請看看我的編輯。替換字符串內的所有輸入標籤都可以。 – user998163

    回答

    0

    將替換所有input標籤,不管它們是否以空格開頭。 /i忽略大小寫和/x忽略空格的regexp因此它的主要目的是更易讀的regexp,

    echo preg_replace("/<\s* input [^>]+ >/xi", "", $content); 
    
    0

    您可能需要一些pattern modifiers我假設您有一塊文字,所以請在您的圖案後添加sU

    +0

    小心使用/ U修飾符,因爲如果所有貪婪的量詞變得懶惰,懶惰的量詞變得貪婪,那麼'「(。+?)」>'將匹配第一個雙引號,直到該行的最後一個雙引號(或帶有s修飾符的字符串) –

    0

    使用DOM對象是通常用於處理HTML比正則表達式更好。

    $content = '<input style="font-size:12px;width:100%" type="text" value="asd"/>' ; 
    
    $dom = new DOMDocument ; 
    $dom->loadHTML($content); 
    
    $node = $dom->getElementsByTagName("input")->item(0); 
    $node->setAttribute("value", ""); 
    echo $dom->saveHTML() ; 
    

    這也可以解釋爲什麼:RegEx match open tags except XHTML self-contained tags

    相關問題