2013-11-23 57 views
1

我有一些字符串作爲獲取貨幣單位:PHP中使用正則表達式

€/£/$400 
£/$/£400 
€/$400 
£/$400 
$400 

我怎麼能這些號碼前獲得貨幣單位,使用正則表達式 - PHP:

例如:

String0= "€/£/$400 + 50 free spins" -> Get €/£/$ 
String1= "€/£/$400" -> Get €/£/$ 
String2= "£/$/£400" -> Get £/$/£ 
String3= "€/$400" -> Get €/$ 
String4= "£/$400" -> Get £/$ 
String5= "$400" -> Get $ 
String5= "£400" -> Get £ 
Update: String6= "50 free spins" -> Get null; 

我想用一個正則表達式函數去掉這個字符串可以完成這個工作。

我使用的是preg_match_all('/\D+/', $str, $matches);,它對貨幣單位顯示正常,但現在我想在上面添加大小寫:String6。請幫我改進它。

回答

1

使用preg_replace只需去除所有的數字:

$repl = preg_replace('/\d+/', '', $input); 

否則只保留允許的字符:

$repl = preg_replace('#[^€/£$]+#u', '', $input); 
+0

的2 -nd變體更好,因爲'preg_replace('/ \ d + /','',$ input);''不會給出正確的結果''$ /£/ $ 400 + 50免費旋轉「' – user4035

+0

@ user4035:是的,這是正確的,早些時候我認爲輸入全部在問題的第一部分。 – anubhava

+0

感謝您的這些快速回答 我更新了問題以獲得空間字符的字符串不容器€/£/ $。 謝謝 – JohnTang

0

您可以使用正前瞻:

<?php 
$str = "€/£/$0400 + 50 free spins"; 
$matches = array(); 
if (preg_match('/(.*?)(?=\d)/u', $str, $matches)) 
{ 
    print $matches[1]; 
} 

//output: €/£/$ 
0
$res = preg_replace('/(^[€\/£$]+).+/u', '$1', $input);