儘量不要太掛像preg_match()
特定的功能。 PHP提供了幾種方法來生成你想要的輸出。我會告訴你三種不同的方法:
輸入:
$response="Response: 311768560
311768562
311768564";
方法#1:explode()
與substr()
和strpos()
(Demo)
$array=explode("\r\n",substr($response,strpos($response,' ')+1));
*注意,這種方法假定第一個字符串(Response
)是唯一不需要的子字符串,並且它總是首先。另外,根據您的編碼環境,\r
可能不是必需的。這可能是我的方法列表中最快的,因爲它不使用正則表達式,但它確實需要3個函數調用和一個增量 - 更不用說它可能太實際用於實際用例。
方法#2:preg_match_all()
(Demo)
$array=preg_match_all('/\d+/',$response,$out)?$out[0]:[];
這種方法是非常直接的,快速,需要最少的代碼。如果有任何缺點,那麼preg_match_all()
會返回true | false結果並以多維數組的形式生成輸出變量。要修改此輸出以適合您的一維要求,我在函數的末尾放置了一個內聯條件,它將所需數據傳遞到$array
。
方法#3:preg_split()
(Demo)
$array=preg_split('/[^\d]+/',$response,null,PREG_SPLIT_NO_EMPTY);
此功能的行爲就像除了它explode()
揮動正則表達式的功率。該模式標識所有非數字子串,並將它們用作「分隔符」,並將它們分割成每個子串。對於你的輸入,第一個分隔符是「Response:」,然後是「311768560」和「311768562」之後的換行符。 preg_split()
的美妙之處在於它直接提供您正在尋找的一維數組。
輸出:
無論哪個你試試上面的方法,你會收到相同的正確的輸出:$array=array('311768560','311768562','311768564');
如果這些方法都失敗了您的實際使用情況,那麼它可能是您的$response
字符串的產品與您在此處發佈的樣本數據太不相同。
只要你想preg_match然後讓我知道,它是固定的,會有3個數字? –