2012-09-26 52 views
0

我需要2組捕獲:1-expr(可以爲空); 2,ESSIPHP的正則表達式 - 需要2組捕獲

見下面的代碼

$s = 'regular expr<span>essi</span>on contains'; 
function my_func($matches){ 

    //I need 2 groups captured 
    //$matches[1] - "expr" (see $s before span) - can be empty, but I still need to capture it 
    //$matches[2] - "essi" (between spans) 
} 
$pattern = "???"; 
echo preg_replace_callback($pattern, my_func, $s); 
+0

那麼,我已經回答了,但我不應該鼓勵這個,所以仍然存在這樣一個問題:你試過了什麼? –

回答

2
$pattern = "~(\w*)<span>(\w+)</span>~"; 

這應該做的伎倆。

如果第二組也應該能夠匹配空字符串,請將+替換爲另一個*。請注意,\w將匹配字母,數字和下劃線。如果這太多或不足,請將其替換爲適當的字符類別。

還有一件事:我認爲preg_replace_callback的語法要求您將函數名稱作爲字符串提交。

+0

我以爲我試圖重述我的問題 - 我想我刪除了這個q。對不起你浪費時間。 – Jeffz

+0

@Jeffz你是什麼意思改述?這不是你真正想要的嗎? –

+3

@Jeffz:如果你的問題是相同的,但澄清和改寫,那麼*只需編輯問題*(點擊問題標籤下方的「編輯」鏈接),不要刪除它;對那些花時間去嘗試和幫助你的人來說,這是非常不禮貌的。清楚地解釋你的問題,解釋你所嘗試的,以及出了什麼問題。 –