Inhaltsverzeichnis
php中unserialize返回false的解决方法,unserializefalse
php 的 unserialize() 函数,返回false 怎解决,
PHP中 unserialize($str)返回 FALSE,打印出$str并写入括号就可以成功,问是为何
Heim Backend-Entwicklung PHP-Tutorial php中unserialize返回false的解决方法,unserializefalse_PHP教程

php中unserialize返回false的解决方法,unserializefalse_PHP教程

Jul 13, 2016 am 10:18 AM
php unserialize

php中unserialize返回false的解决方法,unserializefalse

本文实例讲述了php中unserialize返回false的解决方法,分享给大家供大家参考。具体方法如下:

php 提供serialize(序列化) 与unserialize(反序列化)方法。
使用serialize序列化后,再使用unserialize反序列化就可以获取原来的数据。

先来看看如下程序实例:

<&#63;php 
$arr = array( 
  'name' => 'fdipzone', 
  'gender' => 'male' 
); 
 
$str = serialize($arr); //序列化 
echo 'serialize str:'.$str."\r\n\r\n"; 
 
$content = unserialize($str); // 反序列化 
echo "unserialize str:\r\n"; 
var_dump($content); 
&#63;> 

输出:

serialize str:a:2:{s:4:"name";s:8:"fdipzone";s:6:"gender";s:4:"male";} 
 
unserialize str: 
array(2) { 
 ["name"]=> 
 string(8) "fdipzone" 
 ["gender"]=> 
 string(4) "male" 
} 

但下面这个例子反序列化会返回false

<&#63;php 
$str = 'a:9:{s:4:"time";i:1405306402;s:4:"name";s:6:"新晨";s:5:"url";s:1:"-";s:4:"word";s:1:"-";s:5:"rpage";s:29:"http://www.baidu.com/test.html";s:5:"cpage";s:1:"-";s:2:"ip";s:15:"117.151.180.150";s:7:"ip_city";s:31:"中国北京市 北京市移动";s:4:"miao";s:1:"5";}'; 
var_dump(unserialize($str)); // bool(false) 
&#63;> 

检查序列化后的字符串,发现出问题是在两处地方:

s:5:"url"
s:29:"http://www.baidu.com/test.html"
这两处应为
s:3:"url"
s:30:"http://www.baidu.com/test.html"

出现这种问题的原因是序列化数据时的编码与反序列化时的编码不一致导致,例如数据库是latin1和UTF-8字符长度不一样。
另外有可能出问题的还有单双引号,ascii字符"\0"被解析为 '\0',\0在C中是字符串的结束符等于chr(0),错误解析后算了2个字符。
\r在计算长度时也会出问题。

解决方法如下:

// utf8 
function mb_unserialize($serial_str) { 
  $serial_str= preg_replace('!s:(\d+):"(.*&#63;)";!se', "'s:'.strlen('$2').':\"$2\";'", $serial_str ); 
  $serial_str= str_replace("\r", "", $serial_str); 
  return unserialize($serial_str); 
} 
 
// ascii 
function asc_unserialize($serial_str) { 
  $serial_str = preg_replace('!s:(\d+):"(.*&#63;)";!se', '"s:".strlen("$2").":\"$2\";"', $serial_str ); 
  $serial_str= str_replace("\r", "", $serial_str); 
  return unserialize($serial_str); 
} 

例子:

echo '<meta http-equiv="content-type" content="text/html; charset=utf-8">'; 
 
// utf8 
function mb_unserialize($serial_str) { 
  $serial_str= preg_replace('!s:(\d+):"(.*&#63;)";!se', "'s:'.strlen('$2').':\"$2\";'", $serial_str ); 
  $serial_str= str_replace("\r", "", $serial_str); 
  return unserialize($serial_str); 
} 
 
$str = 'a:9:{s:4:"time";i:1405306402;s:4:"name";s:6:"新晨";s:5:"url";s:1:"-";s:4:"word";s:1:"-";s:5:"rpage";s:29:"http://www.baidu.com/test.html";s:5:"cpage";s:1:"-";s:2:"ip";s:15:"117.151.180.150";s:7:"ip_city";s:31:"中国北京市 北京市移动";s:4:"miao";s:1:"5";}'; 
 
var_dump(unserialize($str));  // false 
 
var_dump(mb_unserialize($str)); // 正确 

使用处理过单双引号,过滤\r的mb_unserialize方法就能成功反序列化了。

使用unserialize:

bool(false)

使用mb_unserialize

array(9) { 
 ["time"]=> 
 int(1405306402) 
 ["name"]=> 
 string(6) "新晨" 
 ["url"]=> 
 string(1) "-" 
 ["word"]=> 
 string(1) "-" 
 ["rpage"]=> 
 string(30) "http://www.baidu.com/test.html" 
 ["cpage"]=> 
 string(1) "-" 
 ["ip"]=> 
 string(15) "117.151.180.150" 
 ["ip_city"]=> 
 string(31) "中国北京市 北京市移动" 
 ["miao"]=> 
 string(1) "5" 
}

希望本文所述对大家PHP程序设计的学习有所帮助。

php 的 unserialize() 函数,返回false 怎解决,

返回false说明你的数据有问题,查询一下你的储存数据是否格式正确。
 

PHP中 unserialize($str)返回 FALSE,打印出$str并写入括号就可以成功,问是为何

这是编码的问题,数据库的编码和PHP文件的编码不一致。
你打印出来文本,经过复制黏贴,其实就是一次编码转换了。
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/882910.htmlTechArticlephp中unserialize返回false的解决方法,unserializefalse 本文实例讲述了php中unserialize返回false的解决方法,分享给大家供大家参考。具体方法如下:...
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind öffentlich, privat und in PHP geschützt Was sind öffentlich, privat und in PHP geschützt Aug 24, 2025 am 03:29 AM

Auf öffentliche Mitglieder können nach Belieben zugegriffen werden. 2. private Mitglieder können nur innerhalb der Klasse zugegriffen werden. 3.. Geschützte Mitglieder können in Klassen und Unterklassen zugegriffen werden. 4. Die rationale Verwendung kann die Sicherheit und die Wartbarkeit der Code verbessern.

So führen Sie eine Update -Abfrage in PHP aus So führen Sie eine Update -Abfrage in PHP aus Aug 24, 2025 am 05:04 AM

Mithilfe von mySQLI-objektorientierter Methode: Erstellen Sie eine Verbindung, Vorprozess-Update-Anweisungen, binden Sie Parameter, führen Sie die Ergebnisse aus und überprüfen Sie sie schließlich die Ressource. 2. Mithilfe der MySQLI -Prozedurmethode: Verbindung mit der Datenbank über Funktionen herstellen, Anweisungen vorbereiten, Parameter binden, Aktualisierungen durchführen und die Verbindung nach Verarbeitungsfehlern schließen. 3.. Verwenden Sie PDO: Stellen Sie eine Verbindung zur Datenbank über PDO ein, setzen Sie den Ausnahmemodus, stellen Sie SQL vor, binden Sie Parameter, führen Sie Aktualisierungen durch, verwenden Sie Try-Catch, um Ausnahmen zu verarbeiten und schließlich Ressourcen zu veröffentlichen. Verwenden Sie immer Vorverarbeitungsanweisungen, um die SQL -Injektion zu verhindern, die Benutzereingabe zu überprüfen und Verbindungen in der Zeit zu schließen.

So verwenden Sie Curl in PHP So verwenden Sie Curl in PHP Aug 24, 2025 am 08:32 AM

CurlinphpenablessendingHttprequests, Fetchingapidata, AnduploadingFiles.initializewithcurl_init (), setOptionslikecurlopt_urlandc URLOPT_RETURNTRANSFER, Usecurlopt_PostForpostrequests, SendjsonwithProperHeaders, HandleErrorsViacurl_errno () undhttpcodesWithCur

Wie lese ich eine CSV -Datei in PHP? Wie lese ich eine CSV -Datei in PHP? Aug 29, 2025 am 08:06 AM

ToreadacsvFileInphp, UseFopen () toopenthefile, fGetCSV () inaloopToreAdeachRowasanarray und FCLOSE () tocloseeit; HandhaderswithaseparatefgetCsv () CallandSpecifyDelimitersAsNeeded, zweifelnde und -ProperepathSandutf-8coding -SpectorpatherpathSandutf-8Coding -SpectorpatherpathSandutf-8Coding-Spuren,

So verwenden Sie AJAX mit PHP So verwenden Sie AJAX mit PHP Aug 29, 2025 am 08:58 AM

AjaxWithPhenablesDynamicWebAppsbyendingAsynchronousRequestswitHoutpageroads.1.CreatehtmlwithjavaScriptUSUtfetch () tosendd ata.2.buildaphpScripttoprocessPostDataAndRetReturnResponses.3.usejsonforComplexDatahandLing.4.AlwaysSanitInputsanddebugviabro

Bearbeiten Sie Lesezeichen in Chrome Bearbeiten Sie Lesezeichen in Chrome Aug 27, 2025 am 12:03 AM

Das Chrome -Lesezeichen -Bearbeitung ist einfach und praktisch. Benutzer können den Lesezeichen -Manager über die Verknüpfungsschlüsselstasten Strg Shift O (Windows) oder CMD Shift O (MAC) eingeben oder über das Browser -Menü eingeben. 1. Beim Bearbeiten eines einzelnen Lesezeichens klicken Sie mit der rechten Maustaste, um "Bearbeiten" auszuwählen, den Titel oder die URL zu ändern und klicken Sie auf "Finish", um sie zu speichern. 2. Bei der Organisation von Lesezeichen in Stapeln können Sie Strg (oder CMD) an Multiple-Choice-Lesezeichen im Lesezeichen-Manager halten. Klicken Sie mit der rechten Maustaste, um mit "Wechsel zu" oder "Kopieren in" den Zielordner zu wählen. 3. Klicken Sie beim Exportieren und Importieren von Lesezeichen auf die Schaltfläche "Lösen", um das "Lesezeichen exportieren" auszuwählen, um sie als HTML -Datei zu speichern, und stellen Sie diese dann über die Funktion "Lesezeichen importieren" bei Bedarf wieder her.

Was ist der Unterschied zwischen Emission und leer in PHP Was ist der Unterschied zwischen Emission und leer in PHP Aug 27, 2025 am 08:38 AM

ISSET () checksifAvariableExistsandisnotnull, returningReEvenforzero, false, oremptystringvalues; 2.Ampty () ChecksifAvariableIsnull, false, 0, "0", "", Orundefined, returningReeforthse "falyy" Werte; 3.ISSet () returnsfalsefornoni. "

Wie bekomme ich das aktuelle Datum und die aktuelle Uhrzeit in PHP? Wie bekomme ich das aktuelle Datum und die aktuelle Uhrzeit in PHP? Aug 31, 2025 am 01:36 AM

Usedate ('y-m-dh: i: s') witdate_default_timezone_set () togetcurrentDateAnDimeInphp, um sicherzustellen, dass AccurateresultsbySettingThedEredTimeZonelike'america/New_York'beForecallingDate () () sicherstellt.

See all articles