2010-09-17 48 views
0

嘗試檢查模式的字符串。PHP正則表達式匹配給出錯誤

$variable = '[text]'; 

if (eregi("/(\[(.*?)\])/", $variable)) {} 

此代碼提供錯誤eregi() [function.eregi]: REG_BADRPT

,這是什麼解決辦法嗎?

+2

你爲什麼使用eregi?從手冊:*此功能從PHP 5.3.0開始已被拒絕。依靠這個功能是非常沮喪的。* http://www.php.net/manual/en/function.eregi.php – 2010-09-17 23:15:43

回答

2

這是因爲你在eregi中使用preg風格的表達式。您不需要perl樣式分隔符。

但是,正如Mark Byers評論的那樣,使用preg_match是未來的證明。

<?php 
$variable = '[text]'; 

if (preg_match("/(\[(.*?)\])/", $variable)) { 
    echo 'ok'; 
} 
0

只是爲了澄清,珍珠風格delimeters是兩個斜線。這是ereg語法的樣子:

<?php 
$str = 'abc'; 
if (ereg('a', $str)) 
{ 
    echo 'match found'; // match found 
} 
?> 

我沒有像通常那樣使用正則表達式,只是爲了保持簡單。

我也想提一下,有多字節ereg函數仍然有效,例如mb_ereg