【问题标题】:Does PHP "serialize" think "html" must be a suffix? Why does it remove it?PHP“序列化”是否认为“html”必须是后缀?为什么要删除它?
【发布时间】:2011-01-29 17:26:09
【问题描述】:

我很难提出这个问题,而且我发现它也很难用谷歌搜索!

症状:我有一个字符串“name_html”,它是序列化数组的一部分。当它到达数据库时,我只剩下“名称”。

如果我将字符串设为“namehtml”,它会被序列化为“nam”。

我已经尝试过各种风格的 PHP、mySQL 和 SQLite,但总是得到这个结果。

我错过了什么明显的东西?感谢您对此的任何帮助! (而且,是的,我已经在 PHP 站点上对“序列化”文档进行了 RTFM。;)

【问题讨论】:

  • 请发布相关代码以说明您的问题。
  • 数据库中的字段是否有长度限制?这将解释截断。还要检查字段是否接受二进制数据,serialize() 有时使用空字节。
  • 当您似乎无法表达您的问题或问题时,只需创建一个简短的通用测试用例来演示该问题。它将帮助每个人理解问题。
  • 你用什么函数/函数来序列化数组?

标签: php html serialization


【解决方案1】:

如果您将 PHP 与 MySQL 一起使用,则两者都有子字符串函数,如果正确,可以解决您的问题。

SELECT SUBSTRING_INDEX(`table`.`field`,'_',1)
FROM `infologicanet1`.`url_alias`;

使用 MySQL 的 SUBSTRING_INDEX() 函数可能会解决您的问题。在 avove 示例中,如果 table.field 值为 *name_html*,则 SELECT 将返回 name,但如果您输入 -1 而不是 1,它将返回 html.

<?php
$string = 'name_html';
$needle = '_';
echo strstr($string, $needle, 1); //returns name
echo strstr($string, $needle, 0); //returns _html
echo stristr($string, $needle, 0);//returns _html
echo stristr($string, $needle, 1);//returns name
?>

使用 PHP 函数:

【讨论】:

  • 那么...serialize() 是从哪里来的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
  • 2019-08-05
  • 1970-01-01
  • 1970-01-01
  • 2011-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多