字符串中的某些字符无法替换

I am trying to change this string

Test - GGA ökologie Geschäftsführer.PDF

into this:

test_-_gga_oekologie_geschaaeftsfuuehrer.pdf

This is what I have tried:

$characters = array('ä', 'ö', 'ü', 'Ä', 'Ö', 'Ü', ' ');
$converted_characters = array('ae', 'oe', 'ue', 'AE', 'OE', 'UE', '_');
$string = 'Test - GGA ökologie Geschäftsführer.PDF';

echo strtolower(str_replace($characters, $converted_characters , $string));

The code above returns: test_-_gga_ökologie_geschäftsführer.pdf

As you see the string still contains the characters ö and ä.

What is wrong with my code?

Try this. I have checked it. You have to copy and replace the characters from your string to array. And it will do the job. The characters in your array and in your string are different.

They are not the same unicode character. If you copy and paste the character from your string and paste it in the array it works as intended.

With regex

$characters = array('/ä/u', '/ö/u', '/ü/u', '/Ä/u', '/Ö/u', '/Ü/u', '/ /' );
$converted_characters = array('ae', 'oe', 'ue', 'AE', 'OE', 'UE', '_');  
$string = 'Test - GGA ökologie Geschäftsführer.PDF';

echo strtolower(preg_replace($characters, $converted_characters , $string));