我有以下函数将特殊重音字符(如ă)转换为字符串中的 a-zA-Z 字符:
function tradu($sir){
$sir_aux = $sir;
$diacritice = array("ă"=>"a", "â"=>"a", "î"=>"i", "Î"=>"I", "ș"=>"s", "ş"=>"s", "ţ"=>"t", "ț"=>"t");
for($i=0; $i<strlen($sir_aux); $i++){
foreach($diacritice as $key=>$value){
if($sir_aux[$i]==$key)
$sir_aux[$i]=$value;
}
}
$sir_aux = strtr($sir, $diacritice);
return $sir_aux;
}
假设 a 是原始字符串,a_translated 是翻译后的字符串。
当我使用strpos(a, string_to_find)
andstrpos(a_translated, string_to_find)
时,返回的值是不同的。我也检查了strlen(a)
,strlen(a_translate)
他们给出了不同的结果。
为什么会这样?
我需要这个解释,因为我需要搜索带有重音符号的字符串是否包含给定的普通字符串(没有重音符号),但我必须从找到它的原始字符串中返回部分,即使它包含重音符号。
我尝试
翻译原始字符串并找到 searched_string 开始的位置,然后 I substr(ORIGINAL_STRING, position)
。这是我注意到位置不对应的地方。
示例:原始字符串:Universitatea a fost înființatăîn 2001 pentru a oferi... 搜索字符串:infiintata 期望结果:înființatăîn 2001 pentru a oferi...