2012-08-30 192 views
0

在PHP中剝離左側和右側字符的最佳方式是什麼?我有它正確的剝離,但不能弄清楚。我嘗試了ltrim,但它似乎不工作。剝離字符的左側和右側

$rawsubject = 'RE: [#4152] - Registration Issues'; 
$casenumber_param="]"; 
$casenumber_strip = strpos($rawsubject,$casenumber_param); 
$casenumber = substr($rawsubject,0,$casenumber_strip); 

輸出目前是:RE: [#4152

我需要剝去一切留下[#因此,所有我留下的是4152

+0

你試過正則表達式拉出裏面'[]'的數字? – Kermit

+0

我沒有,我不知道如何。 – ipengineer

回答

4

有幾種方法可以做到這一點,但如果您使用regular expression,這可能是最好的選擇。這個行爲與您當前的代碼完全相同:找到方括號並隔離所有在它之前出現的連續數字。

if (preg_match('/\d+(?=\])/', $rawsubject, $matches)) { 
    $casenumber = $matches[0]; 
} 

這是非常可能的,你會喜歡的東西更直接,如「搶方括號之間的數字」:

if (preg_match('/\[#(\d+)\]/', $rawsubject, $matches)) { 
    $casenumber = $matches[1]; 
} 

See it in action

0

您當前密碼的合乎邏輯的延伸就是做的另一面:

$rawsubject = 'RE: [#4152] - Registration Issues'; 
$casenumber_start="#"; 
$casenumber_end="]"; 
$start = strpos($rawsubject,$casenumber_start)+1; 
$end = strpos($rawsubject,$casenumber_end); 
$casenumber = substr($rawsubject,$start,$end-$start); 

不過,我想用正則表達式的基礎的解決方案去。

0

剝奪那些LTRIM你需要把它寫這樣的:

$rawsubject = ltrim($rawsubject, "RE:[# ");