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));