2012-05-23 86 views
0

使用preg_match,您可以使用<name>,它會將其添加到輸出數組中。使用preg_replace並保留部分搜索

用了preg_replace,我想匹配的URL,如"http://<url>\s",然後有一個網址替換字符串中的保留,如"beforetheurl<url>aftertheurl"

+2

使用替換字符串中的$ 1,你想要的位置。 $ n保存第n個匹配組的結果,$ 0保存整個匹配結果。見http://php.net/manual/en/function.preg-replace.php – tigrang

回答

2

下面是一個例子,我的評論:

<?php 

$result = preg_replace("/(matched)/", 'before$1after', "matched"); 

echo $result; 

輸出:beforematchedafter

http://codepad.org/PANzOm6c

+0

這就是我正在尋找的。自從您技術上第一個正確回答我的問題(我從您的評論中瞭解到)之後,我會選擇等待限制後的答案。 – Rhyono

2

使用替換字符串中的一個back reference。從manual

echo preg_replace('#http://(\w+).*$#', 'sld = $1', 'http://mysite.com'); 

// output: sld = mysite 

更多:

replacement可以包含形式\ n或(自PHP 4.0.4)$ N,後者的形式是優選的一個的引用。每個這樣的參考文獻將被替換爲第n個 括號內的模式。 n可以是0到99,\ 0或$ 0是指 由整個模式匹配的文本。從左向右(從1開始)將開括號計數爲 以獲得 捕獲子模式的編號。要替換使用反斜槓,它必須是 加倍(「\\」PHP字符串)。