我有以下PHP preg_replace
如何使用php preg_replace和相同的'match'兩次?
$src = preg_replace
(
array(
'/(?si)<p\s+class\s*=\s*"Heading1(.*?)"\s*>(.*?)<\/p>/'
),
array(
"<h1>$2<tocentry content='$2' level='0' /></h1>"
),
$src
);
preg_replace函數搜索與類Heading1
,應像更換任何<p>
一個HTML文檔:
<h1>Introduction<tocentry content='Introduction' level='0' /></h1>
不過,我其實是得到的是:
<h1>Introduction<tocentry content='span class=' level='0' /></h1>
我使用相同的匹配引用('2') - 但是我們收到每個人都有不同的結果。怎麼會這樣?
非常感謝
編輯
它出現的問題是在HTML我preg_replacing
($src
)。
<p>
有一個<span>
作爲一個孩子,這是造成了奇怪的結果。
我現在使用下面,工作正常:
$src = preg_replace
(
array(
'/(?si)<span\s+class\s*=\s*"Heading1-H(.*?)"\s*>(.*?)<\/span>/'
),
array(
"<h1>$2<tocentry content='$2' level='0' /></h1>"
),
$src
);
嘗試將\\ 2更改爲$ 2,與您在第一次參考時使用的一樣。 – TRD
可能有一些非常明顯的我缺少的東西,但爲什麼一個'$ 2'和一個'\\ 2'? – DaveRandom
嗨DaveRandom,TRD - $ 2和\\ 2返回相同的結果「span class =」 - 我已經更新了相應的問題 – kaese