2010-10-19 40 views
0

我想要做一個搜索,以確保我們的每個產品標題都包含其製造商代碼。我正在使用preg_match,但我得到了一些奇怪的結果。PHP的正則表達式匹配括號

這裏的代碼片段,我寫要經過產品的行列......

while($row = mysql_fetch_array($result)) 
     { 
       $products[''.$row[0].''][0] = $row[0]; // Product ID 
       $products[''.$row[0].''][1] = $row[1]; // MFG Part Number 
       $products[''.$row[0].''][2] = $row[2]; // Product Title 

       $search_str = $products[''.$row[0].''][1]; 
       $str_to_search = $products[''.$row[0].''][2]; 

       if(preg_match("~" . $search_str . "~i" ,$str_to_search)){ 

這裏是它返回......(這是在陣列順序)

5300250, P-17(352), Cal June 17" Plastic Buoy Ring P-17(352) NO Match! 
5300251, P-21 (352), Cal June 21" Plastic Buoy Ring P-21 (352) NO Match! 
5708116, DS-683(12PK), Dr. Shrink Weather Tight Vents 12/Pack DS-683(12PK) NO Match! 
5708117, DS-062A(12 PK), Dr. Shrink Hooded Vent 12/Pack DS-062A(12 PK) NO Match! 
5802165, 2PB2 (PR), Rod Saver Paddle Bucket 2"x2' Transom Tie Down 2PB2 (PR) NO Match!PHP Warning: preg_match(): Compilation failed: nothing to repeat at offset 7 in /www/www.boatersplus.com/inventory/append-mfg-code-to-title.php on line 39 

5344226, MA7170**, Mustang Survival Re-Arm Kit (For Use With md3003,md3025) MA7170** NO Match! 
6503286, 4140(140D), Master Lock Padlock 1 1/2" Brass 4140(140D) NO Match! 
6503287, 4150(150D), Master Lock Padlock 1 7/8" Brass 4150(150D) NO Match! 
6217549, RBX-123 *NEW*, Solas Hub Kit M/m 1 1/4" RBX-123 *NEW* NO Match! 
6503285, 4130(130D), Master Lock Padlock 1 1/8" Brass 4130(130D) NO Match! 
6216389, 18-6773 (DROPSHIP), Sierra Trim Motor 18-6773 (DROPSHIP) NO Match! 
5802166, 2PB4 (PR), Rod Saver TieDown Pbkl Svr 2"x4' 2PB4 (PR) NO Match! 
5802167, 2PB6 (PR), Rod Saver TieDown Ratchet Svr 2PB6 (PR) NO Match! 
6217458, RBX-127 *NEW*, Solas Hub Kit Yam F350 RBX-127 *NEW* NO Match! 
MM-DD80ALL(R), DD80-A-LL(R), Dana M80 Drive-rebuilt,old Style DD80-A-LL(R) NO Match! 

因此,由於某些原因,這些不是maching,它看起來是括號和星號不匹配。

任何幫助指向我在正確的方向將不勝感激。

感謝,

克里斯·愛德華茲

回答

1

您應該使用preg_quote()方法逃避括號(以及可能的其他特殊字符)。

在你的情況下,像這樣:

preg_quote($search_str, "~") 
+0

你是個天才!很好,謝謝!!它就像一個正則表達式的附加值。 – 2010-10-19 19:18:04