2015-08-21 81 views
-6

你好,我有以下代碼:PHP的正則表達式的preg_replace html標籤

$content = '<div class="style1" id="divelement" align="center">'; 

這裏是我的代碼:

preg_replace('~<div\s*.*?(?:\s*class\s*=\s*"(.*?)"\s*|\s*id\s*=\s*"(.*?)"\s*)?>~i','<div class="$1" id="$2">', $content); 

現在我想要是替換整個元素,但保持類和id只。

+3

不要使用正則表達式解析HTML,使用DOM庫,比如'DOMDocument'。 – Barmar

+0

我已經用正則表達式一個大文件只...所以我不想使用DOM文檔:/ –

+0

如果只有ü可以給我一個正則表達式代碼 –

回答

0

這將更好地使用圖書館像DOMDocument來解析HTML。但如果你真的有一個正則表達式來做到這一點....

不要在正則表達式,要麼classid,但不能同時使用匹配|

preg_replace('~<div\b.*?\bclass\s*=\s*"(.*?)".*?\bid\s*=\s*"(.*?)".*>~i','<div class="$1" id="$2">', $content); 

注意,如果class是對idDIV左邊這隻會工作。

+0

正則表達式仇敵正在爬行嗎? :)可以更換'。*?''與[^ <]'/'[^ <「]'用於節點內更安全匹配。 –