2016-06-07 21 views
-1

互通我有下面的PHP代碼:正則表達式不與mysqli的

//Usual mysqli stuff before here --> works 

while($post = $result->fetch_assoc()) { 
    $post_text = (string)$post['post_text']; 

    $regex = "/(" . (string)$some_var . " -)(.*?)([A-Z]{4})/"; 
} 

echo $post_text . "<br />"; 

echo $regex . "<br />"; 

preg_match($regex, $post_text, $matches); 

echo count($matches); 

不幸的是我沒有得到任何結果回來,即使我正則表達式似乎用這個工具來工作:http://www.phpliveregex.com/

我還試圖手動將結果像這樣的字符串:

$my_string = "blablablablabla - proper stuff where the regex will find smth" 

使用這個字符串,代碼工作,但只是不能與字符串我從DB回來。我在這裏做錯了什麼?

Thx提前。

+0

'$ some_var'被定義在哪裏?或者是一個僞變量? –

+0

之前 - 但它被定義 - 它不是空的。正如我所說的 - 只要我手動定義字符串(通過在屏幕上打印出mysqli結果並將其放入代碼中的字符串中),一切都可以正常工作。 – TacoVox

+0

錯誤檢查(PHP/MySQL)產生什麼和var_dump? –

回答

0

使它自己工作。問題是,該字符串包含新行,所以我現在正在運行從db收到的東西下面的正則表達式:

preg_replace('/\s+/', ' ', $post_text) 
+0

'。*?'是否假設匹配新行?如果是這樣,請添加's'修飾符,並且您的正則表達式將按預期工作;不需要更換。提供一個例子,其他人可以重現問題總是有幫助的。未知的字符串與正則表達式問題幾乎不可能回答。 – chris85