2012-02-08 81 views
1

我想使用的preg_match從一些HTML提取一些數據。我想從以下行的阿賈克斯的號碼與的preg_match():分隔符不能是字母,數字或反斜線

new Ajax.Request('/selectdata/new/get_ids?id=687420' 

所以,我用下面的PHP

preg_match('new Ajax.Request\(\'/selectdata/new/get_ids\?id=(.+?)\'', $buffer, $matches) 

我得到的消息「的preg_match():分隔符不能是字母數字或反斜槓「

我已經嘗試了很多變體,但沒有成功。

+2

http://php.net/manual/en/regexp.reference.delimiters.php簡單明瞭。 – 2012-02-08 18:36:45

回答

6

第一個參數中的第一個字符必須是分隔符。由於它是「n」,preg_match認爲你正在嘗試使用'n'分隔的正則表達式。

添加管道,獲得成功:

preg_match('|new Ajax.Request\\(\'/selectdata/new/get_ids\\?id=(.+?)\'|', $buffer, $matches) 

測試:

$ php --interactive 
php > $a = "new Ajax.Request('/selectdata/new/get_ids?id=687420'"; 
php > preg_match('|new Ajax.Request\\(\'/selectdata/new/get_ids\\?id=(.+?)\'|', $a, $matches); 
php > var_dump($matches); 
array(2) { 
    [0]=> 
    string(52) "new Ajax.Request('/selectdata/new/get_ids?id=687420'" 
    [1]=> 
    string(6) "687420" 
} 
+0

謝謝,已經嘗試過。仍然沒有成功返回數字。沒有錯誤,但。 – user1197941 2012-02-08 18:42:21

+0

我最初有一些反斜槓,但是當我測試時,這對我有用:''a =「new Ajax.Request('/ selectdata/new/get_ids?id = 687420'」; preg_match('| new Ajax.Request \ \(\'/ selectdata/new/get_ids \\?id =(。+?)\'|',$ a,$ matches); var_dump($ matches);' – 2012-02-08 18:46:42

+0

啊,是的,我現在看到,非常感謝:) – user1197941 2012-02-08 18:55:42

相關問題