PHP Regex Match круглые скобки - PullRequest
0 голосов
/ 19 октября 2010

Я пытаюсь выполнить поиск, чтобы убедиться, что каждое из наших наименований продуктов содержит свой код производителя.Я использую preg_match, но получаю некоторые странные результаты.

Вот фрагмент кода, который я написал, чтобы просмотреть массив продуктов ...

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!

Так что по какой-то причине это не обработка, похоже, что круглые скобки и звездочки не совпадают.

Любая помощь, указывающая мне правильное направление, будет принята с благодарностью.

Спасибо,

Крис Эдвардс

1 Ответ

1 голос
/ 19 октября 2010

Вы должны использовать метод preg_quote(), чтобы избежать скобок (и, возможно, других специальных символов).

В вашем случае, например:

preg_quote($search_str, "~")
...