Добавьте кавычки к значениям в строке, разделенной запятой php - PullRequest
4 голосов
/ 19 июня 2009

У меня есть окно поиска, которое может содержать несколько значений, используя запятую, например, макароны, тунец, яйца

Я использую FULLTEXT mysql search, но мне нужно использовать какой-то preg_replace, чтобы превратить Pasta, тунец, яйца в 'Pasta', 'тунец', 'eggs'

Если я введу эти «макароны», «тунец», «яйца» в поле поиска, результаты будут правильными.

Ответы [ 5 ]

13 голосов
/ 19 июня 2009

Не используйте регулярные выражения для задач, которые можно решить иначе. То, что вы хотите, это простая замена строки:

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

Сначала вы должны экранировать кавычки внутри строки (хотя вы не знаете, какой у вас экранирующий символ, при условии, что это обратный слеш):

$string = "'" . str_replace(array("'", ","), array("\\'", "','"), $string) . "'";
2 голосов
/ 19 июня 2009

Вы строите 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 голосов
/ 19 июня 2009

Ребята, извините за беспокойство, но я решил свой вопрос! Я посмотрел на это, и с самого начала все было неправильно.

Мне пришлось заменить каждый пробел и знак плюс, так что ", тунец" = "+ тунец"

В любом случае, спасибо

0 голосов
/ 19 июня 2009

взорвет вашу строку, затем перед каждым результирующим массивом добавит необходимые символы

0 голосов
/ 19 июня 2009

Есть ли у вас запятая в значениях?

Если бы вы не могли использовать что-то вроде:

preg_replace('/[^,]+/g', '\'\1\'', preg_replace('/\'/g', '\\\'', $text))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...