Замена текста в строке, содержащей массивы сериализацииPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Замена текста в строке, содержащей массивы сериализации

Сообщение Anonymous »

Спасибо, что нажали на вопрос. Я пытаюсь найти и заменить текст в строке, содержащей массивы сериализации. Например:

Код: Выделить всё

'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" ... }
Я хочу изменить http://example.com/ на smth, иначе я могу сделать это с помощью str_replace, но это не изменит индикатор длины строки (например, s:25 ).

Я использую эту функцию:

Код: Выделить всё

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;
}
Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/472 ... ize-arrays
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»