2011-11-21 18 views
0

分離PHP中提取文本我在格式文本:通過一段

123232.23

43438282.00

我想提取並將它們存儲到兩個變量$美元和$美分。

期望的結果將是第一個文本如下:

$dollar = '123232'

$cent = '23'

我怎樣才能做到這一點在PHP中使用正則表達式

+1

你有這種格式的「文本」,或與具體內容一個字符串變量? – mario

+2

爲什麼你需要正則表達式來做到這一點?爲什麼不使用php eplode函數更快? – Oleg

+0

@ user366534不知道。完整的初學者在這裏。 – WebNovice

回答

6

爲什麼不直接使用explodelist

list($dollar, $cent) = explode('.', $text); 
3

以下是此正則表達式:

$regex = '~^(?P<dollar>\d+)\.(?P<cent>\d+)$~'; 

if (preg_match($regex, $number, $matches)) { 
    //$matches['dollar'] 
    //$matches['cent'] 
} 
+0

感謝loseb。但我想我會使用帶有列表的爆炸。簡單得多。 – WebNovice

+0

不客氣!這取決於你;) – ioseb

1

您可以使用一個簡單的爆炸功能,如果你只有一個單獨的字符串,但是如果你在文本文件中有多個數字並且你想提取它們,你可以按照下面的方式進行操作。

對於第一個分隔符,我使用了一個換行符`\ n。你可以改變它適合你。

$s = <<<ABC 
123232.23 
43438282.00 
3333.66 
ABC; 

$arr = explode("\n", $s); 
print_r($arr); 
$exarr = array(); 
foreach($arr as $arv){ 
    $exarr[] = explode(".", $arv); 
} 

print_r($exarr); 

這將分析每個或數字輸出的東西類似下面這樣:

Array 
(
    [0] => 123232.23 
    [1] => 43438282.00 
    [2] => 3333.66 
) 
Array 
(
    [0] => Array 
     (
      [0] => 123232 
      [1] => 23 
     ) 

    [1] => Array 
     (
      [0] => 43438282 
      [1] => 00 
     ) 

    [2] => Array 
     (
      [0] => 3333 
      [1] => 66 
     ) 

) 
+0

謝謝,但它只是一個簡單的單一字符串。將使用與列表爆炸 – WebNovice