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