How can preg_replace() be used to remove unwanted characters in PHP strings?

To remove unwanted characters in PHP strings, we can use the preg_replace() function with a regular expression pattern that matches the unwanted characters. This function replaces all occurrences of the matched pattern with an empty string, effectively removing the unwanted characters from the string.

```php
$string = "Hello, $world! This is a #test string.";
$cleaned_string = preg_replace('/[^a-zA-Z0-9\s]/', '', $string);
echo $cleaned_string;
```

In this code snippet, we use preg_replace() to remove any characters that are not letters, numbers, or whitespaces from the original string. The regular expression pattern '/[^a-zA-Z0-9\s]/' matches any character that is not a letter, number, or whitespace. The third argument of preg_replace() is an empty string, which means that any matched characters will be replaced with nothing, effectively removing them from the string.