2016-07-03 2 views
1

私は、テキストファイルに変数の結果をドロップするために、Linuxターミナルで実行するためのPHPスクリプトを作成しています。PHPスクリプトの対話でアクセント語を入力するにはどうしたらいいですか?

すべてがうまくいっているようですが、スクリプトを実行すると端末の入力行が表示されますが、アクセント記号(´)とá é í ó úなどのアクセント記号を含むアクセント語は書き込めません。ターミナルで実行中のスクリプトのスクリーンショットがここに示されている

<?php 
$cuantos = readline("Cuantas veces? "); 
$cadena = readline("Escriba el Texto: "); 
$separar = readline("Incluir separadores? "); 
$separar = strtoupper($separar); 
$archivar = ""; 
for ($x = 1; $x <= $cuantos; $x++) { 
     if ($separar=="S") { $archivar = $archivar . "Texto ".$x."\n";} 
     if ($separar=="S") { $archivar = $archivar . "----------------------------------\n";} 
     echo $archivar = $archivar . $cadena\n; 
     if ($separar=="S") { $archivar = $archivar . "==================================\n";} 
} 
file_put_contents('textos.txt', $archivar); 
?> 

enter image description here

ことに注意してください。ここ

は、コードの一部は、私は、ユーザー入力を受け入れるために使用していますテキストは Este texto debería tener acentos pero en la terminal no está aceptando ningún caracter con tilde.となるはずですが、テキストにはアクセントが表示されません。

readlineにアクセントを受け入れさせるために、すでに<?php header("Content-Type: text/html; charset=utf-8"); ?>とその他の文字を使用しようとしました。私も変更しようとしましたphp.iniデフォルトの文字セットとこれまでのところ成功しません。このスクリーンショットで見られるように

私は問題がなく、端末でアクセント文字を書くことができます。

enter image description here

を、運がまだ提案されているようmb_internal_encoding("UTF-8");を挿入した後。

enter image description here enter image description here

おそらく、何かが私の端末と間違っているのですが、それは私がこれがtty端末上で動作し、またはべきではないと思う作ったのですか?だから私は試してみましたが、私は同じ結果を得ました。

enter image description here

すべてのヘルプは高く評価されます。

+0

はあなたがシェル自体にそれらの文字を書くことができますか? – purrogrammer

+0

はいできます。すべてのアクセントレターは問題のない端末に表示されます。最近追加したスクリーンショットをご覧ください。ありがとうございました。 –

+0

'mb_internal_encoding(" UTF-8 ");' – purrogrammer

答えて

1

EDITED enter image description here

問題は、Ubuntuの14.04のデフォルトのPHPパッケージは、もともとBSDのために書かれたのlibeditを使用していることです。これにはバグがあり、回避策ではlibeditをreadlineに置き換える必要があります。ここで

は、バグレポートです:

  1. https://mail-index.netbsd.org/tech-userlevel/2011/01/26/msg004486.html
  2. https://bugs.launchpad.net/ubuntu/+source/libedit/+bug/816758

ソリューション:

私は修正ビルドでDebianパッケージを作成しました。 Ubuntu 14.04で正常に動作し、アクセント文字で問題を解決します。

  1. CD/tmpの
  2. gitのクローンhttps://github.com/mitghi/php5
  3. CD ./php5
  4. のdpkg -i --force -B-上書きphp5_5.5.9 + DFSG-1ubuntu4.17_all --force-依存します。 DEB
  5. php5enmodのreadlineの
  6. のdpkg -iのphp5-readline_5.5.9 + DFSG-1ubuntu4.17_amd64.deb

注意:

依存関係のエラーの場合は、次のコマンドを実行しますsudo apt-get -f install

+1

この手順は、前の手順よりも簡単で高速です。それにもかかわらず、私は手順5で 'php5enmode'の代わりに' php5enmod'を使わなければなりませんでした。 'sudo apt-get -f install'を実行することによって解決した依存関係の問題に直面し、その後すべての依存関係が満たされ、あなたの努力、時間と忍耐力に感謝します。私のインストールプロセスは、こちらからご覧いただけます。http://pastebin.com/qrBPA5LJ –

+1

うまくいきました。歓迎します。あなたが言及した手順を投稿して追加するように編集します。 – purrogrammer

関連する問題