我想探索以下字符串,该字符串是我使用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);
}
答案 0 :(得分:1)
您的问题的文本中包含相同的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++|
)
除了解决方案
您可能应该规范化数据库,以便将来进行搜索时更可靠,更轻松
答案 1 :(得分:0)
如果不使用字符就需要上述输出,则仍然可以轻松完成
首先正常运行查询,无需进行任何修改,因此结果将为
$result = "login background signup material";
使用后爆炸,
$snid = explode("," , $result);
现在您需要|根据您的结果,您可以执行以下
$finalresult = str_ireplace(",", "|", "$snid");
现在输出有|代替