PHP - strpos()在UTF8编码的json上?

时间:2016-10-12 07:20:36

标签: php json utf-8

我有JSON输出Kirchhellener Stra\u00dfe .. \u00df是UTF8编码的德语字母ß ..我想在输出中搜索单词Straße并替换它,但我无法弄清楚如何?

$street = json_decode($bit->long_name); // here the `Kirchhellener Stra\u00dfe` is put into $street

$check_strasse1 = strpos($street, 'Straße');
$check_strasse2 = strpos($street, 'Stra\u00dfe');

if($check_strasse1 !== false || $check_strasse2 !== false) {    
    echo "oki";             
    $street = str_replace('Strasse', 'Str.', $street);
    $street = str_replace('Stra\u00dfe', 'Str.', $street);
} else {    
    echo "nope";        
}

我如何检测$street中有Straße

1 个答案:

答案 0 :(得分:1)

要在PHP中使用UTF-8编码的字符串,必须使用mbstring扩展名。在这种情况下,您要查找的功能是mb_strpos()

或者,在这种情况下,您可以使用preg_replace()

preg_replace('/Straße/u', 'Str.', $street);

u修饰符可确保在匹配字符串时使用UTF-8编码。您不需要检查字符串是否存在,因为如果字符串不存在,则不会被替换。您也可以跳过\u00df变体,因为json_decode()会将此文字转换为正确的UTF-8字符。