2012-12-13 102 views
0

我不能讓下面的正則表達式正常工作:正則表達式的preg_match()發出

preg_match('Currently: ([0-9\.km,]+)', $data, $matches) 

$數據內的信息是:「這是什麼目前:52523」(約30 HTML的線一起) 。

我不斷收到以下錯誤:Warning: preg_match(): Delimiter must not be alphanumeric or backslash in C:\xampp\htdocs\test\test.php on line 49

注:行49包含了我上面張貼的preg_match。

編輯:道歉,我忘了添加在匹配參數。

回答

1

你需要在模式的開頭和結尾添加相同的字符:

preg_match('/Currently: ([0-9\.km,]+)/', $data) 

該字符不能格局裏面出現,除非你逃避它,例如:

preg_match('/<example><\/example>/', $xml) 

您可以使用其他字符作爲分隔符,其中最常用的一種/#

5

preg_match function在你的模式中需要一個分隔符。

preg_match('/Currently: ([0-9\.km,]+)/', $data, $matches) 

編輯:

如在註釋中描述

@JoséRobertoAraújoJúnior curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); If that is what you mean, yes I have set it. If i echo $data , it displays the webpage, which means it still contains all the html tags.. I'm not sure what to do from here, to use that data in my preg_

然後,它可能是$data包含之間的空格:Currently:(...),所以這應該在你的模式中加入被認爲是\s+而不是一般的空格,\s將匹配PCRE regex syntax documentation page中所述的任何空格字符。

preg_match('/Currently:\s+([0-9\.km,]+)/', $data, $matches) 

現場測試: http://codepad.viper-7.com/xJNisE

1

你必須使用分隔符這樣的編輯

$data = 'What it is Currently: 52,523'; 
preg_match('&Currently: ([0-9\.km,]+)&', $data, $match); 
print_r($match); 

工作示例http://codepad.viper-7.com/QGOoXT

+0

我用這個試過了,所有返回的是「1 」。我錯過了什麼嗎?我從字面上複製+粘貼你的上面的例子。 – Woddles

+0

@Woddles使用編輯後的代碼。它會給出匹配的值。 –

+0

@Woddles [preg_match](http://br2.php.net/preg_match)在* pattern *與給定* subject *匹配的情況下返回'1',否則返回'1',如果發生錯誤則返回'FALSE' 。檢查文檔的鏈接;) –