2011-11-21 20 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