我有一個使用CKEditor生成HTML的textarea。我想確保用戶輸入的所有鏈接都有他們的target="_blank"
。我認爲我需要做兩個正則表達式檢查:一個替換任何target="..."
到target="_blank"
,另一個插入目標屬性,其中目標屬性不存在。我不是做多大進展:正則表達式,以確保所有鏈接都有target =「_ blank」
// where target attribute doesn't exist, add it
preg_replace("/<a(\s*(?!target)([\w\-])+=([\\"\'])[^\\"\']+\3)*\s*\/?>/", "<a target="_blank"$1>", $input_lines);
這個作品在這個簡單的例子:
<a href="#">one</a> ---> <a target="_blank" href="#">one</a>
它不爲<a href="#" alt="hello">one</a>
工作,我不知道爲什麼,但我通常不這樣做這對正則表達式來說很有挑戰。
此外,我將如何替換現有的target="..."
(例如target="_parent
「)與嚴格target="_blank
」?
的HTML/XML解析器可能會更好,http://php.net/manual/en/refs.xml.php。 – chris85
我只是想堅持下去,在堆棧溢出所有時間的最佳答案之一:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained標籤都有效/ 1732454#1732454 – CD001