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

时间:2017-03-22 12:17:58

标签: php

我正在尝试更改此字符串

测试 - GGAökologieGeschäftsführer.PDF

进入这个:

测试_-_ gga_oekologie_geschaaeftsfuuehrer.pdf

这就是我的尝试:

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

上面的代码返回: test _-_gga_ökologie_geschäftsführer.pdf

如您所见,该字符串仍然包含字符öä

我的代码出了什么问题?

3 个答案:

答案 0 :(得分:5)

它们不是同一个unicode角色。如果您复制并粘贴字符串中的字符并将其粘贴到数组中,则按预期工作。

答案 1 :(得分:5)

使用正则表达式

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

答案 2 :(得分:4)

试试这个。我检查了一下。您必须将字符串中的字符复制并替换为数组。它会完成这项工作。数组和字符串中的字符不同。

相关问题