我有一个文本区。单击“提交”后,文本区中的日期应逐行发送到数据库。但首先我想替换一下德语中的特殊字母(ä,ö,ü,«)。
我的问题是:它不能工作。输出始终为"ä,öorü“。但是如果我用静态的"ä“替换变量(并且不使用来自文本区域的数据),脚本就可以工作了。如果我在分解后使用文本区域中的数据,脚本不会替换字母。
<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
?>发布于 2016-11-03 09:19:18
有一个解决方案: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;
}它对你有效吗?
发布于 2016-11-03 10:33:46
mb_*函数不能进行替换。在使用strtr()之前,您应该使用iconv()或mb_convert_encoding()。
https://stackoverflow.com/questions/40392213
复制相似问题