以逗号分隔的字符串作为URL数组

ehxuflar  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(485)

这个问题在这里已经有答案了

在数据库列中存储分隔列表真的那么糟糕吗(10个答案)
两年前关门了。
我需要在mysql表中存储一个逗号分隔的字符串(url数组)。
例如:

"https://google.com,https://yahoo.com,https://something.com"

从我正在使用的php中的表中获取这个 explode 函数获取数组。

$arr = explode(',', $string);

问题是因为某些url本身可能包含逗号字符,这可能会产生混淆。
事实上,url可以包含任何字符,转义或不-它会产生错误 explode 功能。
有什么帮助吗?

zbwhf8kr

zbwhf8kr1#

尝试使用一组在url(如$&$)中永远找不到的字符来分隔值,这些字符将充当逗号,因此在检索值时,您将执行以下操作: $arr = explode('$&$', $string); 您还可以构建一个数组,并使用json\u编码和保存字符串,您将摆脱explode函数,例如:

$arrayOfUrls = [your array];
$urlsInJson = json_encode($arrayOfUrls);

然后将$urlsinjson存储在数据库中
要检索您将使用的数据

$arrayOfUrls = json_decode($yourQueryResult['URLS'])

希望有帮助。

csga3l58

csga3l582#

你可以用 urlencode() ```
$stupidCommaUrl = 'http://why.com/is,there/a/comma';
echo urlencode($stupidCommaUrl);

// outputs http%3A%2F%2Fwhy.com%2Fis%2Cthere%2Fa%2Fcomma

你可以用 `urldecode()` 把它换回来。
你的数据库设计听起来有缺陷。正如nigel在上面的评论中所说的,研究数据库规范化。

相关问题