Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Some characters in the string cannot be replaced

Tags:

php

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?

like image 751
Reza Avatar asked May 03 '26 09:05

Reza


2 Answers

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.

like image 53
laurentius Avatar answered May 04 '26 21:05

laurentius


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));
like image 33
Nick Avatar answered May 04 '26 22:05

Nick