我有一个textarea。点击“提交”后,textarea的日期应该从一行发送到一个数据库。但首先我要替换德国特殊字母(ä,ö,ü,ß)。
我的问题:它不起作用。输出始终为“ä,ö或ü”。但是如果我用静态“ä”替换变量(并且不使用textarea中的数据),则脚本正在运行。 如果我在爆炸后使用textarea中的数据,则脚本不会替换字母。
<form action="kategorie-add.php" method="POST">
<textarea name="kategorien"></textarea><br>
KAT-NR: <input type="text" name="genre"><br>
<input type="submit" name="submit" value="Senden">
</form>
<?php
if($_POST['submit']){
$msg = explode( "\r\n", $_POST['kategorien'] );
foreach( $msg as $zeile ){
$ers = array(
'Ä' => 'Ae',
'Ö' => 'Oe',
'Ü' => 'Ue',
'ä' => 'ae',
'ö' => 'oe',
'ü' => 'ue',
'ß' => 'ss'
);
$PfadDoc = strtr($zeile,$ers);
//This is working:
//$PfadDoc = strtr('ä',$ers);
echo $PfadDoc
?>
答案 0 :(得分:1)
有一个解决方案:https://www.liketly.com/forum/thread/32385/multibyte-strtr-mb_strtr/
function my_strtr($inputStr, $from, $to, $encoding = 'UTF-8') {
$inputStrLength = mb_strlen($inputStr, $encoding);
$translated = '';
for($i = 0; $i < $inputStrLength; $i++) {
$currentChar = mb_substr($inputStr, $i, 1, $encoding);
$translatedCharPos = mb_strpos($from, $currentChar, 0, $encoding);
if($translatedCharPos === false) {
$translated .= $currentChar;
}
else {
$translated .= mb_substr($to, $translatedCharPos, 1, $encoding);
}
}
return $translated;
}
它对你有用吗?
答案 1 :(得分:0)
mb_ *功能无法替代。在使用strtr()之前,你应该使用iconv()或mb_convert_encoding()。