兩次我知道我可以在更換指長期的動態部分的正則表達式在PHP中:動態搜索術語的正則表達式
preg_replace('/(test1)(test2)(test3)/',"$3$2$1",$string);
(不知這個樣子,我不知道這是正確的,但它不是我所期待的)
我想,在正則表達式,如:
preg_match_all("~<(.*)>.*</$1>~",$string,$matches);
的「<」之間的第一部分「>」是動態的(所以每一個標籤在HTML現有的和甚至自己的XML標籤可以是f ound),我想在同一個正則表達式中再次提到這一點。
但它不適用於我。這甚至有可能嗎? 我有PHP 5.3
/編輯服務器:
我的最終目標是:
如果有一個HTML頁面隨e。 G。下面的源代碼: HTML
<html>
<head>
<title>Titel</title>
</head>
<body>
<div>
<p>
p-test<br />
br-test
</p>
<div>
<p>
div-p-test
</p>
</div>
</div>
</body>
</html>
並處理它應該看起來像在替換字符串
$htmlArr = array(
'html' => array(
'head' => array('title' => 'Titel'),
'body' => array(
'div0' => array(
'p0' => 'p-test<br />br-test',
'div1' => array(
'p1' => 'div-p-test'
)
)
)
));
您不得使用常規rexpressions處理HTML或XML。 [有這種工作的工具。](http://php.net/manual/en/class.domdocument.php)使用它們。 – Tomalak 2012-04-07 14:14:55
[永遠不要使用正則表達式來解析HTML/XML](http://stackoverflow.com/a/1732454/383609)。這不是一種常規的語言。改爲使用[HTML/XML解析器](http://php.net/manual/en/class.domdocument.php)。 – Bojangles 2012-04-07 14:15:15
你提出的結構沒有意義。將文件解析爲DOM並使用它有什麼問題? (除了你認爲數組比DOM更容易,這不是一個足夠好的理由) – Tomalak 2012-04-08 19:38:51