2014-01-10 65 views
1

提取(英文字母+數字+下劃線)字符串使用reg exp在PHP中快速提取點之前和之後的內容。我可能會使用爆炸,但需要很長的處理時間。如何使用reg exp

樣品字符串:

$line = 'var init=new class.init(object.color, object.arrayElements);'; 

我需要和替換:類,初始化,對象,顏色,對象,arrayElements

我的嘗試下面的表達式,前一個垂直的點得到的話(:)但它在單點的情況下不起作用!

$result = preg_match_all('/[a-z0-9_]+(?=\s*.)/i', $line, $output); 

你的提示是極大的讚賞 - 對不起,我沒有找到搜索:(

感謝您的幫助任何回答

回答

1
preg_match_all('/(\w+)\.(\w+)/', $line, $out); 

會給你字字符連接!到期,其中\wshorthand[A-Za-z0-9_]Modifier i對於不區分大小寫是不必要的,因爲\w包含上部下部已經。

echo "<pre>"; 

// [0] full matches 
print_r($out[0]); 

// [1] \w+ before period 
print_r($out[1]); 

// [2] \w+ after period 
print_r($out[2]); 

echo "</pre>"; 
+0

非常感謝!精湛的解決方案!但是,請您告訴我如何提取點​​之前或之後的內容,以防有空間之類的情況發生。顏色?謝謝! – moderns

+1

@moderns使用'\ s'作爲任何類型的白色空格,例如''/(\ w +)\ s * \。\ s *(\ w +)/''其中'\ s'是'[\ t \ r \ n \ f]'的簡寫形式, ''/(\ w +)* \。 *(\ w +)/'' –

+0

我不知道該如何謝謝你!您提供了出色的解決方案,並提供了精彩的說明謝謝! – moderns