Как манипулировать текстом в PHP, чтобы иметь одинарную кавычку и запятую

Мой вопрос должен быть простым, но я не могу понять, как это сделать:

$input = "Hello, Beautiful, World";

а также

$expected_output = "'Hello','Beautiful','World'";

Я знаю, что могу разделить текст на explode(" ", $input);

но как присоединиться к ', ?

Зачем мне это нужно? Мне нужно, чтобы он подготовил запрос MySQL, например

SELECT value FROM tab_settings WHERE name IN ('Hello', 'Beautiful', 'World')

из $input


person Tikky    schedule 23.08.2019    source источник
comment
Возьмите подсказку из вашего собственного комментария Мне нужно, чтобы он подготовил запрос MySQL, например, и посмотрите, как это сделать с помощью подготовленных операторов.   -  person Nigel Ren    schedule 23.08.2019


Ответы (3)


Вы можете использовать приведенный ниже фрагмент для того же

echo "'".implode("','",explode(", ", $input))."'";

Демо

person Rahul    schedule 23.08.2019

Вы можете использовать REGEXP

SELECT * FROM author WHERE aut_name REGEXP 'hello|benny|meny';

Прочтите здесь Логический оператор AND в mySql REGEXP?

person bobom    schedule 23.08.2019

Это, вероятно, отвечает на ваш конкретный вопрос:

<?php
$subject = "Hello, Beautiful, World";

preg_match_all('/(\w+)/', $subject, $words);
$words = $words[1];

$tokens = [];
array_walk($words, function($word) use (&$tokens) {
    $tokens[] = "'" . $word . "'";
});
$tokens = implode(',', $tokens);

var_dump($tokens);

Вывод, очевидно, таков:

string(27) "'Привет','Красиво','Мир'"


Но, пожалуйста, позвольте нам дать подсказку здесь:

Стратегия, которую вы используете для создания запросов sql таким образом, основанным на строках, в конечном итоге является очень плохой идеей, поскольку она делает ваш код уязвимым для того, что обычно называют «атаками с внедрением sql». Вы хотите предотвратить это.

Пожалуйста, начните читать о преимуществах использования комбинации «подготовленных операторов» и «привязки параметров» для предотвращения таких уязвимостей.

person arkascha    schedule 23.08.2019