我試圖使用PHP preg_math解析字符串,看起來像:使用PHP的preg_match
6.15608128 Norwegian kroner
我只是想在第一部分(數字),而不是文字。我寫了一個簡單的正則表達式像
[0-9\.]+
是工作在正則表達式測試正常,但PHP抱怨的「+」。任何人都可以幫我寫這個正則表達式,所以它對preg_match函數有效嗎?我嘗試了很多不同的想法,但我對真正的正則表達式不太瞭解。
感謝您的任何提示。
我試圖使用PHP preg_math解析字符串,看起來像:使用PHP的preg_match
6.15608128 Norwegian kroner
我只是想在第一部分(數字),而不是文字。我寫了一個簡單的正則表達式像
[0-9\.]+
是工作在正則表達式測試正常,但PHP抱怨的「+」。任何人都可以幫我寫這個正則表達式,所以它對preg_match函數有效嗎?我嘗試了很多不同的想法,但我對真正的正則表達式不太瞭解。
感謝您的任何提示。
The regex works fine。您是否缺少delimiters?該函數應該這樣來使用:
preg_match('/[0-9\.]+/', $string, $result);
(。順便說一句,你不需要逃避字符類中的.
[0-9.]
就夠了)
非常感謝Kenny,你是對的,我錯過了分隔符。 – julio 2010-09-02 18:08:43
正如您可能已經猜到的,我正在搞亂Google貨幣轉換API。問題是,他們是非常不規範的用自己的數據,這是不正確的JSON等 一些匯率的有空格,而不是逗號或其他separators--如: 1 811.5942哥倫比亞比索 是否有改變這個正則表達式來包含這個空間的方法?再次,在一個正常的正則表達式中,您只需在點([0-9 \。])之後添加一個空格,但這在PHP中不起作用。 再次感謝。 – julio 2010-09-02 18:19:24
@ julio:'[0-9。 ]'必須工作(但也包括哥倫比亞之前的空間)。如果沒有,請嘗試'[0-9。\ s]'。如果問題是由於額外的空間造成的,請嘗試使用[\ d \ s] + \。\ d +'。 – kennytm 2010-09-02 18:24:18
不具有實際的代碼,這裏是一些代碼確實有效:
$string = "6.15608128 Norwegian kroner";
preg_match('#[0-9\.]+#', $string, $matches);
print_r($matches);
/* Outputs:
Array
(
[0] => 6.15608128
)
*/
#號是分隔符。有關php正則表達式的更多信息,請參閱this article。
你是否用斜線包圍了你的模式?
preg_match('/[0-9\.]+/', $string, $matches);
它不*有*是斜線,只是必須是一個有效的分隔符,作爲一個fyi :) – 2010-09-02 17:56:26
Neato - 不知道。 – sholsapp 2010-09-02 17:57:30
試試這個:
$s = '6.15608128 Norwegian kroner';
preg_match('/[0-9]*\.[0-9]*/', $s, $matches);
var_dump($matches);
的完整代碼,請。 – kennytm 2010-09-02 17:50:16
「PHP抱怨+」是什麼意思?它說什麼? – BoltClock 2010-09-02 17:50:40
當你在一個字符類中時,你不需要轉義它。 – Aillyn 2010-09-02 17:56:54