Как взорвать строку в Codeigniter - PullRequest
0 голосов
/ 19 апреля 2019

Я хочу изучить следующую строку, которую я извлекаю из базы данных в CodeIgniter, используя цикл foreach. На самом деле, я использую двойной разделитель для различения тегов, таких как SQL и MySQL, потому что LIKE "% sql%" также будет возвращать результаты MySQL. Должно быть как "% | sql |%"

|login||background||signup||material-design|

Я попробовал следующий код, но безуспешно.

$snippettag_id = explode('|', $snippet_tags);

    foreach($snippettag_id as $tag_id) {
    $tag_name = $tag_id;
    $this->db->or_like('snippets_name', $tag_name);
    }

Ответы [ 2 ]

1 голос
/ 19 апреля 2019

Ваша проблема с такими же delimiter и symbol в тексте. Здесь вам нужно replace ваш разделитель в db и explode(), попробуйте сохранить , вместо | в качестве разделителя

$str = "|sql|,|Mysql|,|php|,|C#|,|C++|";//DB string
echo'<pre>';echo $str;
$strArray = explode(',', $str);
echo'<pre>';print_r($strArray);die;

Выход:

|sql|,|Mysql|,|php|,|C#|,|C++|

Array
(
    [0] => |sql|
    [1] => |Mysql|
    [2] => |php|
    [3] => |C#|
    [4] => |C++|
)

Помимо решения

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

0 голосов
/ 19 апреля 2019

Если вам нужен вывод, как вы упомянули выше, без использования символов, так что вы все еще можете сделать это просто

Сначала выполните нормальный запрос без каких-либо изменений, чтобы результаты были

$result = "login background signup material";

После этого использования взорваться,

$snid = explode("," , $result);

Теперь тебе нужно | в результате вы можете сделать следующее

$finalresult = str_ireplace(",", "|", "$snid");

Теперь на выходе есть | вместо

...