Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Unserialize, märkligt problem

Postades av 2009-02-06 08:26:35 - Jonas Sjöblom, i forum php, Tråden har 5 Kommentarer och lästs av 1244 personer

Kör jag unserialize på första stringen fungerar det, andra failar

<code>
a:9:{s:4:"name";s:4:"test";s:7:"type_id";s:1:"1";s:7:"area_id";s:3:"101";s:7:"address";s:0:"";s:5:"phone";s:0:"";s:4:"mail";s:0:"";s:3:"url";s:0:"";s:5:"image";s:0:"";s:7:"content";a:3:{s:3:"swe";s:11:"<P>test</P>";s:3:"fin";s:0:"";s:3:"eng";s:0:"";}}

a:9:{s:4:"name";s:4:"test";s:7:"type_id";s:1:"1";s:7:"area_id";s:3:"101";s:7:"address";s:0:"";s:5:"phone";s:0:"";s:4:"mail";s:0:"";s:3:"url";s:0:"";s:5:"image";s:0:"";s:7:"content";a:3:{s:3:"swe";s:24:"<P>test</P> <P>test</P>";s:3:"fin";s:0:"";s:3:"eng";s:0:"";}}
</code>

Enda skillnaden är "<P>test</P>" i den ena och "<P>test</P> <P>test</P>" i den andra.

Felmeddelandet jag får:
unserialize() [function.unserialize]: Error at offset 226 of 263 bytes


Svara

Sv: Unserialize, märkligt problem

Postades av 2009-02-06 09:02:42 - Jonas Sjöblom

Som vanligt hittade jag felet precis efter att ha postat här.


Siffran precis före <P> anger antal tecken i strängen. I det här fallet i den korrekta strängen:
11:"<P>test</P>"

och i den felaktiga:
24:"<P>test</P> <P>test</P>"

Om man räknar antalet tecken i första strängen blir det 11 som det ska, men i den andra borde det vara 23 och inte 24.


Så felet låg inte i unserialize utan i serialize. Strängen jag försökte mata in var:
<code>
<P>test</P>
<P>test</P>
</code>

Av någon anledning räknar den strängen innan den skriver om den och radbrytningen räknas som 2 tecken "\n" eller kanske "\r\n".
Sedan skrivs strängen om till "<P>test</P> <P>test</P>" (new line ersatt med mellanslag(?)) och är då ett tecken kortare.


Lösning: ersätt alla new lines innan man serializar (fungerar bra i mitt fall, men jag kan se andra lägen där det inte fungerar)
<code>
$obj["content"] = str_replace("\n"," ",$obj["content"]);
$data = serialize($obj);
</code>


Svara

Sv:Unserialize, märkligt problem

Postades av 2009-02-06 12:28:47 - Oskar Johansson

Testa att köra escape eller någonting på det först, samt en unescape efter. (Eller vad det nu kan heta i php), nyrad borde bli %någonting


Svara

Sv:Unserialize, märkligt problem

Postades av 2009-02-06 14:35:42 - Per Persson

<b>Av någon anledning räknar den strängen innan den skriver om den</b>

Vad menar du med "skriver om den"?

Hur hanterar <b>du</b> strängen mellan serialize() och unserialize()? Jag antar att du inte bara kör unserialize(serialize($sträng)). Troligen är det där som något händer med radbrytningen.


Svara

Sv: Unserialize, märkligt problem

Postades av 2009-02-06 18:29:43 - Jonas Sjöblom

Jag rörde inte strängen alls tidigare, serialize skriver om strängen på så sätt att den tar bort radbrytningar.

Det exakta förloppet var:

Läs in inmatad sträng från formulär: $vars['content'] = $_POST['content']
Spara till databas: serialize($vars)

Läs från databas
unserialize($row['vars']) <-- failade


När jag ändrade till detta fungerade det:

Läs in inmatad sträng från formulär: $vars['content'] = $_POST['content']
$vars['content'] = str_replace('\n','',$vars['content']); <--- Lade till denna rad
Spara till databas: serialize($vars)

Läs från databas
unserialize($row['vars']) <-- fungerar nu!


Svara

Sv:Unserialize, märkligt problem

Postades av 2009-02-07 00:00:55 - Per Persson

Det är inte så att något händer när du sparar och återläser strängen i databasen?


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 614
27 953
271 709
980
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies