Vielen Dank für das Klicken auf die Frage. Ich versuche, Text in einer Zeichenfolge zu finden und zu ersetzen, die Arrays serialisiert. Zum Beispiel:Ersetzen von Text innerhalb einer Zeichenfolge, die Arrays serialisiert
'fgm2wc_options', 'a:19:{s:15:"automatic_empty";N;s:3:"url";s:25:"http://example.com/store/";s:8:"hostname";s:9:"localhost";s:4:"port";s:4:"3306";s:8:"database";s:22:"apgadmin_store_magento";s:8:"username" ... }
Ich mag http://example.com/ ändern sonst etw ich es mit str_replace tun können, aber es wird den String-Länge-Indikatoren nicht ändern (z s: 25).
Dies ist eine Funktion, die ich bin mit:
function recursive_unserialize_replace($old_url = '', $new_url = '', $data = '', $serialised = false) {
$new_url = rtrim($new_url, '/');
$data = explode(', ', $data);
try {
if (is_string($data) && ($unserialized = @unserialize($data)) !== false) {
$data = recursive_unserialize_replace($old_url, $new_url, $unserialized, true);
} elseif (is_array($data)) {
$_tmp = array();
foreach ($data as $key => $value) {
$_tmp[ $key ] = recursive_unserialize_replace($old_url, $new_url, $value);
}
$data = $_tmp;
unset($_tmp);
} else {
if (is_string($data)) {
$data = str_replace($old_url, $new_url, $data);
}
}
if ($serialised) {
return serialize($data);
}
} catch(Exception $error) {
}
return $data;
}
Irgendwelche Ideen?
Warum machst du das? Warum verwalten Sie nicht einfach die Daten, die Sie als zusammengesetzten Datentyp wie ein Array bearbeiten müssen? – GordonM
@GordonM Die Daten stammen von einer hochgeladenen Datei, die ich als String gelesen habe, gibt es eine Möglichkeit, sie als Array zu lesen? –
Warum nicht unserialisieren, die ursprüngliche Struktur aktualisieren und dann wieder serialisieren? –