我正在尝试更改此字符串
测试 - 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
如您所见,该字符串仍然包含字符ö和ä。
我的代码出了什么问题?
答案 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)
试试这个。我检查了一下。您必须将字符串中的字符复制并替换为数组。它会完成这项工作。数组和字符串中的字符不同。