特殊文字コード「 」の入った文字列から空白を取り除きたいです。
下記コードの変数$testにはformより送られてきた&emsp分の空白が含まれた文字列が格納されています
$testには'山田 太郎'となっており、間の空白に 分の空白が入っている状態です
$replaceTarget = array('<br>', ' ', ' ', ' ',' ',' '); $test = str_replace($replaceTarget,'',$test); echo $test;
上記のechoの結果は空白が取り除かれていない状態で表示がされ、デベロッパーツールにてelement項目を確認した結果、 は取り除かれていませんでした。
原因が分からない為、解決法につきまして、ご助言頂ければ幸いです。
追記です
str_replace前及び後の$testをvar_dumpした結果は以下になります。
:string '山田 太郎' (length=15)
$test の初期状態は?
どうしてformからemspが送られるのかが分からないですね。あとからなんとかするよりそっちの方が問題では?不要なら「送らないようにする」べきですね。
もしDBに保存するのでしたら送られた情報を勝手に加工することになるので、それはそれで仕様としておかしいです。
$emsp; って何ですか?
空白を特殊記号であらわしたものです。 より少し広いものですね
それは   なのでは?
$って何ですか、というお話。
あ、タイプミスしてました。修正しておきます。
あの、str_replace() 直前直後の生データが見たいって話です。さらにいうと、データとプログラムで空白の文字コードが違ってんじゃないスか? そうじゃなかったら、元プログラムで記入ミスしてるくらいじゃないのかなあ。
var_dumpした結果を追記しました。
  という文字列は含まれてないですね。
あ、HTMLの方で として、空白を入れたのでその分の空白を取り除きたいといった意味でした
いずれにしても$replaceTargetには全角空白「' '」と半角空白「' '」を配列に含ませていますし、何故空白が削除されないのかが、分からない部分ですね...
bin2hex() で $test と $replaceTarget を比較すれば原因がわかるんじゃないかなあ。
var_dump(bin2hex($test));をstr_replace前と後で実行してみましたが、結果は同じでした。。。
いや、bin2hex($test) の結果と bin2hex($replaceTarget[5]) の結果を比べましょう、って話です。
2つの出力結果は違うものとなりましたが、$replaceTarget[5]は、全角空白「' '」を指していますが、$testと比べることで何が判明するのでしょうか...?
さっきも書いたように、データの文字コードとphpスクリプトファイルの文字コードが異なってるってことスよ。原因が分かったので、あとは文字コードを合わせてやるだけっス。
理解が悪くて申し訳ないのですが、bin2hex関数は文字列を16進数に変換させる関数かと思います。
$replaceTarget[5]と$testでは文字列が違う為、出力結果は違って当然のように思うのですが、何故この結果から、文字コードが違うということが分かるのでしょうか?
回答1件
あなたの回答
tips
プレビュー