Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用组分隔符的explode()函数_Php_Mysql_Explode - Fatal编程技术网

Php 使用组分隔符的explode()函数

Php 使用组分隔符的explode()函数,php,mysql,explode,Php,Mysql,Explode,根据这篇文章的发现,我使用了GROUP\u CONCAT SELECT `topic_response`.`response`, GROUP_CONCAT(`comment` SEPARATOR 0x1D ) AS `comment`, `topic_response`.`add_date` FROM `topic_response` WHERE (topic_id = 286) AND (`comment` IS NOT NULL) GROUP BY `response`

根据这篇文章的发现,我使用了
GROUP\u CONCAT

SELECT
  `topic_response`.`response`,
  GROUP_CONCAT(`comment` SEPARATOR 0x1D ) AS `comment`,
  `topic_response`.`add_date`
FROM `topic_response`
WHERE (topic_id = 286)
    AND (`comment` IS NOT NULL)
GROUP BY `response`
ORDER BY `add_date` desc
然后,我的输出被正确地分开,但我不知道如何
explode()
it

explode("0x1D", $comment) or     explode("\0x1D", $comment)

这不起作用。

为什么要使用
0x1D
作为分隔符

一种更方便的解决方案是将
GROUP_-CONCAT('comment'分隔符0x1D)
更改为
GROUP_-CONCAT('comment'分隔符“|”)
,然后只执行
分解('124;“,$comment)

如果您希望在“注释”中出现
“|”
,则可以用任何字符串替换
“|”
。因此,
“asd42gfqwasdf33”
也是一个有效的分隔符,它不太可能在您的注释中显示为字符


但真正的问题是:为什么您要对注释进行分组压缩,然后分解结果,而您可以只循环sql结果(不使用分组压缩)。

如果您仍然想使用0x1D作为seprator,您可以使用以下
分解
语法:

explode(“\x1D”,$comment)

我使用了
chr
函数进行
explode
。基本上
0x1D
ascii
string
29

explode(chr(29), $comment)

毫无疑问,它在所有情况下都能解决问题。

为什么首先使用0x1D作为分隔符?因为答案goto
2nd
answer@medinano
comment
可能包含
|
符号,所以它使用
explode
获取假值,在这种情况下,只需使用“1927rfqpyfy39”作为分隔符:)它可以是任何字符串。无论如何,它比使用二进制字符更简单。然而,一个完全不同的问题是:为什么你们要把评论集中在一起,然后再把它们爆开。循环sql结果不是更好吗?注释中可能是
1
,然后使用
explode
:)给出假值。使其成为您想要的字符串,字符串越长。你真正遇到它的机会就越小。。但更好的是:当你需要通过评论进行评论时,不要使用群组讨论。。。只需循环正常的select sql结果。@DevalShah,不,
1
注释中的字母当分隔符为
^12&nbahjkYg1
>时,不要给出错误的结果转到第二个答案复制我的注释为什么不复制;)不,在发布之前我没有刷新评论:)
explode
工作得很好:
$php数组([0]=>一条记录[1]=>两条记录[2]=>三条记录)
不起作用,因为如果字符串包含
1D
,则会再次出错