我有一些串這樣的:替換內 「空間」,preg_replace函數PHP
I:11;:5:{S:2: 「ID」; S:4: 「1097」; S :5:「iName」; s:12:「Ovo de Andre」; s:10:「dropChance」; s:4:「2000」; s:4:「type」; i:1; s:5:「kName」; s:12:「安德烈Ovo」;
而且,我想知道我怎麼能替換字符串:「大毛德安德烈」到這樣的事情:
「Ovo_de_Andre」,但不能更改任何空間,可能會出來「」。
我嘗試:
$字符串= preg_replace函數( '/ 「?。?()\ S()」/米', ' 「$ 1_ $ 2」',$串);
,但它只是代替了第一空間,則該字符串看起來像這樣:
I:11;:5:{S:2: 「ID」; S:4:」 1097「; s:5:」iName「; s:12:」Ovo_de Andre「; s:10:」dropChance「; s:4:」2000「; s:4:」type「; i:1; s:5:「kName」; s:12:「Ovo_de Andre」;
我知道我可以用一段時間來檢查它,但它會對性能造成問題,我認爲它會是多餘的。
此外,我想知道如何做出同樣的結果,而不是替換「」中的空格,將其替換掉,而不更改「」中的空格。
在此先感謝。
我有這個環節,使類似的東西,但我不能管理有什麼改變,使其達到我想要什麼: Using preg_replace to replace all occurrences in php。
這裏是完整的數據,我把它分成字符串,一個接一個地尋找錯誤。
$ string ='a:16:{'; $ string。='i:0; a:5:{s:2:「id」; s:4:「1113」; s:5:「iName」; s:5:「Drops」; s:10 : 「dropChance」; S:4: 「7500」; S:4: 「類型」; I:1; S:5: 「kName」; S:5: 「滴」;}';$ string。='i:1; a:5:{s:2:「id」; s:4:「1585」; s:5:「iName」; s:11:「Mime Monkey」; s: 10:「dropChance」; s:4:「7000」; s:4:「type」; i:1; s:5:「kName」; s:11:「Mime Monkey」;}'; $ string。='i:2; a:5:{s:2:「id」; s:4:「1027」; s:5:「iName」; s:7:「Raptice」; s:10 : 「dropChance」; S:4: 「7000」; S:4: 「類型」; I:1; S:5: 「kName」; S:7: 「Raptice」;}'; $ string。='i:3; a:5:{s:2:「id」; s:4:「1002」; s:5:「iName」; s:6:「Poring」; s:10 : 「dropChance」; S:4: 「7000」; S:4: 「類型」; I:1; S:5: 「kName」; S:6: 「波令」;}'; $ string。='i:4; a:5:{s:2:「id」; s:4:「1767」; s:5:「iName」; s:8:「Deviling」; s:10 : 「dropChance」; S:4: 「5000」; S:4: 「類型」; I:2; S:5: 「kName」; S:8: 「Deviling」;}'; $ string。='i:5; a:5:{s:2:「id」; s:4:「1767」; s:5:「iName」; s:8:「Deviling」; s:10 : 「dropChance」; S:4: 「5000」; S:4: 「類型」; I:2; S:5: 「kName」; S:8: 「Deviling」;}'; $ string。='i:6; a:5:{s:2:「id」; s:4:「1766」; s:5:「iName」; s:8:「Angeling」; s:10:「dropChance」 ; S:4: 「5000」; S:4: 「類型」; I:2; S:5: 「kName」; S:8: 「Angeling」;}'; $ string。='i:7; a:5:{s:2:「id」; s:4:「1766」; s:5:「iName」; s:8:「Angeling」; s:10 : 「dropChance」; S:4: 「5000」; S:4: 「類型」; I:2; S:5: 「kName」; S:8: 「Angeling」;}'; $ string。='i:8; a:5:{s:2:「id」; s:4:「1004」; s:5:「iName」; s:6:「Zangão」; s:10 : 「dropChance」; S:4: 「3500」; S:4: 「類型」; I:1; S:5: 「kName」; S:6: 「Zangão」;}'; $ string。='i:9; a:5:{s:2:「id」; s:4:「1236」; s:5:「iName」; s:12:「Ovo de Andre」; s :10:「dropChance」; s:4:「3000」; s:4:「type」; i:1; s:5:「kName」; s:12:「Ovo de Andre」;}'; $ string。='i:10; a:5:{s:2:「id」; s:4:「1076」; s:5:「iName」; s:9:「Esqueleto」; s:10 : 「dropChance」; S:4: 「3000」; S:4: 「類型」; I:1; S:5: 「kName」; S:9: 「Esqueleto」;}'; $ string。='i:11; a:5:{s:2:「id」; s:4:「1097」; s:5:「iName」; s:12:「Ovo de Andre」; s :10:「dropChance」; s:4:「2000」; s:4:「type」; i:1; s:5:「kName」; s:12:「Ovo de Andre」;}'; $ string。='i:12; a:5:{s:2:「id」; s:4:「1051」; s:5:「iName」; s:14:「Besouro-Ladrão」; s :10: 「dropChance」; S:4: 「2000」; S:4: 「類型」; I:1; S:5: 「kName」; S:14: 「Besouro-Ladrão」;}'; $ string。='i:13; a:5:{s:2:「id」; s:4:「1183」; s:5:「iName」; s:16:「ChonChon Raivoso」; s: 10:「dropChance」; s:4:「1500」; s:4:「type」; i:1; s:5:「kName」; s:16:「ChonChon Raivoso」;}';
$ string。='i:14; a:5:{s:2:「id」; s:4:「1011」; s:5:「iName」; s:8:「ChonChon」; s: 10: 「dropChance」; S:4: 「1500」; S:4: 「類型」; I:1; S:5: 「kName」; S:8: 「飛頭」;}'; $ string。='i:15; a:5:{s:2:「id」; s:4:「1784」; s:5:「iName」; s:5:「Stapo」; s:10 : 「dropChance」; S:4: 「1000」; S:4: 「類型」; I:1; S:5: 「kName」; S:5: 「Stapo」;}'; $ string。='}';
如果仔細打量,你會在通知行我:0和我:矢量11顯示了行號和數據的大小存在數據之間存在一些空間。
這看起來像一個序列化的陣列,你爲什麼不先反序列化?無論如何,如果你只是想替換空格,那麼就不需要正則表達式。看看['str_replace'](http://php.net/manual/en/function.str-replace.php)。 – 2012-03-11 17:48:41
str_replace將替換「」之外的空格,因此它會破壞這個字符串,因爲它不是一個完美的序列化的字符串,我要求的這個函數會刪除超出真正的序列化字符串的空格,使其成爲正確的序列化字符串。 – Marcelo 2012-03-11 17:52:45
好吧@Marcelo - 我在這裏看到你已經闡明瞭你沒有一個有效的序列化對象。那麼不理我的答案! – calumbrodie 2012-03-11 18:01:19