• 締切済み

PHPの文字化けについて(2)

agunuzの回答

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

>trimをかけるだけで問題無かったのでしょうか。 utf-8のソースなら、trimの第二引数に"  \t\n\r\0\x0B"のように(って空白は見えませんよねww)asciiの空白とマルチバイトの空白の両方を書いてしまえばいいと思います。 #正規表現の関数を使うよりもはるかに(10倍以上)高速です。

megumi1122
質問者

補足

回答頂きありがとう御座います。 >#正規表現の関数を使うよりもはるかに(10倍以上)高速です。 なるほど、高速化の要素もあるんですか。 大変勉強になりました。

関連するQ&A

  • php 指定文字列以降の削除

    phpにて半角スペース以降の文字列を問答無用で削除するというプログラムを作ろうとしてるのですが上手くいきません。 どうすればできますでしょうか? ご教授のほどよろしくお願いいたします。 ---- ソースコード $str = '2017/1/1 10-28'; if (preg_match("/ /", $str)){ $replace = str_replace(' ', '', $str); } echo $replace;

    • ベストアンサー
    • PHP
  • PHPの正規表現で【】内を文字列ごと削除

    あいうえお【かきく】けこさ。【しすせそ】 といった感じの文字列を、【かきく】や【しすせそ】を削除して、 ”あいうえお けこさ。” としたいのですが・・・ $str = preg_replace("【.*】"," ",$str) とすると、 あいうえお ってなっちゃうし、 $str = preg_replace("/【.{1,5}?】/"," ",$str) とかやってみても上手く行かず。 はて?「/」は何を意味するのだろう。とか思いながら試行錯誤してはみてるのですが・・・ どなたかご教授くださいませんでしょうか。 お願いします。

    • ベストアンサー
    • PHP
  • 【PHP】常にマルチバイト文字列関数でいいですか?

    PHP初心者です。バージョンは4です。 文字を扱う関数はマルチバイト対応と非対応があるみたいですがその使い分けがわかりません。いっそ常にマルチバイト対応にしとけばいいのではと考えてしまいますがどうなのでしょう?たとえば、置換の場合、 preg_replace と str_replace がありますが、常に preg_replace を使っていて問題はないのでしょうか? お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • preg_replace 英数字以外の文字の前後のスペースを削除

    preg_replaceで 英数字の前後いずれかのスペースは残して それ以外のスペースを消したいのですが あ a間が消えてしまいます。(英数字前なので消さない) a aはのこるので英数字後のスペースは残せてます。 <?php $str = \"あ a a\"; $txt = preg_replace(\"/([^a-zA-Z\\d])\\s+/u\", \"$1\", $str); echo $txt;

    • ベストアンサー
    • PHP
  • ある文字からある文字までの削除について

    現在ケータイサイト用に書いた文章をPCでも見れるようにしているのですが、 ケータイサイト用の絵文字コードが直接表示されてしまうため、preg_replaceで削除したいのですがパターンはどのように記述すればよろしいでしょうか? $str = "おはようございます[i:100]。こんにちは[i:101]。こんばんわ[i:102]。"; ↓ [ から ] までの文字を消し、 $str = "おはようございます。こんにちは。こんばんわ。"; と表示させたいのです…。 ご教授頂けたら幸いですm(_ _;)m よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPの文字化けについて

    いつもお世話になってます。 以下の様な問題が発生しておりまして、 何か解決するための情報がありましたらご提供頂けませんでしょうか。 ------------ PHPで、テキストボックスと登録ボタンを配置した簡単な入力フォームを作成しました。 (登録ボタン押下後は入力した文字を消すことはせず、 DB側に登録した内容をテキストボックスに表示するような形式です。) ところがテキストボックスに「能」と言う文字を入力すると、 文字化けを起こし、「??」と言う文字が表示されます。 「一」や「日」などは問題ありませんでした。 これは2byte文字の変換に失敗している所為と考え、文字コードについて調べました。 PHP側からは全てutf8の文字コードでデータを送信しています。 DB側の文字コードは以下のようになっていました。 >show variables like 'character\_set\_%'; Variable_name Value character_set_client utf8 character_set_connection utf8 character_set_database utf8 character_set_filesystem binary character_set_results utf8 character_set_server ujis character_set_system utf8 各種サイト様を参考にしたところ、 character_set_server が ujis となっているのが問題のような気がしています。 ですが、本DBは学校で借りているレンタルサーバを使用しているため、 my.cnf等直接ファイルを修正することが出来ません。 なので、以下のサイト様を参考にSQL発行の際には必ず SET character_set_server = utf8; も発行するようにしてみたのですが、上手くいきませんでした。 http://thesnowcolor.blogspot.jp/2010/10/phpmyadmin.html 自ら試したのはここまでです、何かほかに調べたほうがよい、 などありましたら情報のご提供宜しくお願い致します。 【PHP環境】 Apache 2.2.3 PHP 5.1.6 MySQL 5.0.45 (※他、必要情報ありましたらご指摘お願いします)

    • ベストアンサー
    • PHP
  • PHPで文字を検索して取り込みたい。

    PHPで文字を検索して取り込みたい。 %の文字が、何度か出現するソースなのですが そのソースの中にある50%のような全角で%の数値を 取り込みたいのです。 //////ソース//////// <table> <TR> <TD>あ</TD> <TD><B>88%</B>/TD> </TR> <TR> <TD>す</TD> <TD><B>85%</B>/TD> </TR> ........... </table> /////////////////////// 下記のように実行しましたが 思うような結果は得られません。 <?php $str = file_get_contents('http://123456/index.html'); if (preg_match('!<table>\s*?(.*?)</table>!s', $str, $res)) $text = mb_convert_encoding($res[1],"shift-jis","UTF-8");preg_match_all("/-*[0-9]+/",str_replace(",","",$text),$matches); print ($matches[0][0]); ////////////////////////////// php初心者です。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 文字化け

    PHPを最近勉強し始めたのですが、どうしても文字化けしてしまう箇所があり質問させていただきました。 海外から購入したスクリプトを日本語化しようとしているのですが、エンコード方式が違う?ため、文字化けするようです。(.phpファイルの文字コードはEUC-JPで統一しています) function encode_s($s) { $s = rawurlencode($s); $s = str_replace('%26','&',$s); $s = preg_replace('/%([\dABCDEF]{2})/e', "'&#'.hexdec('\\1').';'",$s); return $s; } マルチバイト関数等を勉強中ですが現状ではわからないです。 どなたかご指摘お願いします。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 指定の文字を入れ替えることについて!

    こんばんわっ! 最近は寒くなってきました。 インフルエンザは大丈夫ですか皆さん。 さて早速質問行かせて頂きます。 フォームの入力値に絵文字が入っていたら取り除くと言う事をしてたんですけど。。。 バイナリ値に分解は出来ました。 分解を行い絵文字を〓にしたいと思っています。 $_POST[1] = str_replace('/\[d:(F[346789][0-F]{2})\]/e', '〓', $_POST[1]); にしてみましてけどだめでした。 $_POST[1] = str_replace('/BAD\+(F[346789][0-F]{2})/', '[★]', $_POST[1]); を加えてみてもだめでした。 preg_replace にしてみてもだめでした。 どこが間違っていますか!!!

    • ベストアンサー
    • PHP
  • preg_replaceで改行が含まれてしまう

    preg_replaceを使って置換をしようと思い、 $str = <<< END test test ;comment test END; $fstr = preg_replace("/;(.*$)/m", "<>;\\1<>", $str); echo $fstr; と言うようにやってみたのですが、置換した文字の後に改行が入ってしまいます どのようにすればいいのでしょうか?

    • ベストアンサー
    • PHP