WordPress core and most of its plugins are storing data in the database in a special format, so-called serialized data representation. That type is used for storing or passing PHP values without losing their type or structure.
Without getting too technical here it’s important to know that the serialized data representation can handle nearly all data types like arrays, strings, and objects.
Let’s have a look at how WordPress plugins and themes typically store values in the database. After that, you understand why we just can not do a simple search and replace through the database when we clone WordPress from one location to another.
Let’s say a theme is creating an array for storing color and a path:
In pure PHP it looks like that
$settings = array( 'color' => 'green', 'path' => 'https://domain.com' );
When that array is stored in the database it is converted into the serialized representation and looks like that:
The advantage is that the serialized data representation can be stored in the database much easier than the PHP array. The drawback is that the serialized data can not be changed by a simple search & replace as you would do with a text editor.
If you just change the color or the path the serialized data representation would be broken and could not be used by PHP any longer. As a result, the plugin would not be working any longer or much worst, WordPress would be broken as well.
The reason is that the serialized data is also storing the length of the values in the serialized data representation.
If you change the path domain.com to host.com you also need to change the value of s:18 to s:16 because https://host.com only contains 16 values instead of 18.
If you do that programmatically, the serialized data needs to be converted back into an array. From there it can be replaced by just changing the array values.
As you already notice, doing that manually with hundreds or even thousands of values in a WordPress database is an impossible task. That’s why WP Staging is doing all that deserialization and serialization automatically for you and while it is doing that step it replaces the corresponding values to the new ones when a WordPress clone is created.