iconv
がどのように機能するのかまだわかりません。
例えば、
_$string = "Löic & René";
$output = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $string);
_
ええ、
Notice:iconv()[function.iconv]:入力文字列で不正な文字を検出しました...
_$string = "Löic";
_または_$string = "René";
_
ええ、
注意:iconv() [function.iconv]:
は、入力文字列inで不完全なマルチバイト文字を検出しました。
_$string = "&";
_で何も得られない
データベースのテーブル内の2つの異なる列に保存する必要がある2つの異なる出力セットがあります。
URLをきれいにするために_Löic & René
_を_Loic & Rene
_に変換する必要があります。
それらをそのまま保持する必要があります-_Löic & René
_を_Löic & René
_として、HTMLページに表示するときにhtmlentities($string, ENT_QUOTES);
でのみ変換します。
php.net 以下の提案をいくつか試してみましたが、まだ動作しません。
音訳された一部の文字が必要な状況がありましたが、他の文字は無視されました(aynやhamzaなどの奇妙な発音区別符号のため)。 // TRANSLIT // IGNOREを追加することは、私にとってはうまくいくように思えました。音訳できるすべてのものを音訳しますが、できないものは捨てます。
そう:
_$string = "ʿABBĀSĀBĀD";
echo iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $string);
// output: [nothing, and you get a notice]
echo iconv('UTF-8', 'ISO-8859-1//IGNORE', $string);
// output: ABBSBD
echo iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $string);
// output: ABBASABAD
// Yay! That's what I wanted!
_
そしてもう一つ、
_Andries Seutens 07-Nov-2009 07:38
When doing transliteration, you have to make sure that your LC_COLLATE is properly set, otherwise the default POSIX will be used.
To transform "rené" into "rene" we could use the following code snippet:
setlocale(LC_CTYPE, 'nl_BE.utf8');
$string = 'rené';
$string = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
echo $string; // outputs rene
_
実際にそれらをどのように解決できますか?
ありがとう。
編集:
これは、コードをテストするソースファイルです。
_<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" class="no-js">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<?php
$string = "Löic & René";
$output = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $string);
?>
</html>
_
また、ソースファイルをUTF-8エンコードで保存しましたか?そうでない場合(そして、それが「不完全なマルチバイト文字」エラーを生成するので、そうしなかったと思います)、最初にそれを試してください。
$clean = iconv('UTF-8', 'ASCII//TRANSLIT', utf8_encode($s));