如何在Codeigniter中爆炸字符串

时间:2019-04-19 10:05:09

标签: php codeigniter explode

我想探索以下字符串,该字符串是我使用foreach循环从CodeIgniter中的数据库中获取的。实际上,我使用双定界符来区分诸如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 个答案:

答案 0 :(得分:1)

您的问题的文本中包含相同的delimitersymbol,在这里您需要replacedbexplode()中使用分隔符,尝试保存,代替|作为分隔符

$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++|
)

除了解决方案

  

您可能应该规范化数据库,以便将来进行搜索时更可靠,更轻松

答案 1 :(得分:0)

如果不使用字符就需要上述输出,则仍然可以轻松完成

首先正常运行查询,无需进行任何修改,因此结果将为

$result = "login background signup material";

使用后爆炸,

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

现在您需要|根据您的结果,您可以执行以下

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

现在输出有|代替