2009-06-19 4 views
4

で区切られた文字列で、私はカンマを使用して複数の値を含めることができます検索ボックスを持っている値に引用符を追加します。例えばパスタ、FULLTEXT mysqlの検索を使用して、マグロ、卵は、コンマPHP

イムしかし、私はいくつかを使用する必要がありますパスタ、マグロ、卵を「パスタ」、「マグロ」、「卵」に変えるためのpreg_replaceの種類

「パスタ」、「マグロ」、「卵」を検索ボックスに入力すると結果は正しいです。

答えて

0

値にカンマがありますか?

次のようなものを使用できない場合は、次の

preg_replace('/[^,]+/g', '\'\1\'', preg_replace('/\'/g', '\\\'', $text)) 
0

あなたの文字列を内破し、foreachの結果の配列と

2

リストでSQLクエリを構築する必要記号を追加しますか?その場合は、結果として生じるSQLが適切にエスケープされるようにしばらく時間を取らなければなりません。

$myList = "pasta, tuna, eggs"; 

$items = preg_split("/[,\\s]+/", $myList); 
$sqlItems = array(); 
foreach ($items as $item) { 
    $sqlItems[] = "'" . mysql_real_escape_string($item) . "'"; 
} 

// Add new list to SQL 
$sql .= implode(",", $sqlItems); 
+0

「マグロ、」宇宙ので、プラス記号で、それぞれを交換しなければなりませんでした $ query_finder = "SELECTタイトル、SmallDesc、id、picturesmallからのレシピWHAT MATCH(Ingredients)AGAINST( '+ $ include - $ exclude' BOOLEAN MODE)AND type = '$ type' "; –

+0

ここで、$ includeは検索用語です。 –

+0

最終的なSQLクエリはどのように見え、SQLエラーは何ですか? – Blixt

13

他に解決できる問題について正規表現を使用しないでください。

$string = "'" . str_replace(array("'", ","), array("\\'", "','"), $string) . "'"; 
+0

シンプルで作品! –

0

ガイズ:(それはバックスラッシュだと仮定すると、あなたのエスケープ文字が何であるかを知らない)のに

$string = "'" . str_replace(",", "','", $string) . "'"; 

あなたは、最初の文字列内の引用符をエスケープする必要があります何が欲しいのは、単純な文字列置換であります申し訳ありませんが、私は自分の質問を解決しました! Iveはこれを見て、まずは間違っていた。

私は文字列がに表示されますので、これはdefienetly正しい方向への一歩である= 『+マグロ』

とにかく感謝