Webサイトのシステムを作っているとぶち当たるのが文字列の問題。
俗にいう文字化け対策。
エンコードやエスケープ処理をしっかりしてないとえらい目にあったり。。。

PHPやその他の言語からデータが戻された際によくあるのが
PHP側(UTF-8)→Javascript(HTML側・SHIFT-JIS)など。
今は全てUTF-8で統一してるけど、昔よくハマってたw

そんなわけで今回はちょっち便利な変換でも。

たとえば、JQuery使っているならこんな感じでエスケープとアンエスケープ出来る。


function changeEscape(val, type) {
if(type == 'escape'){
return $('<div>').text(val).html();
}else if(type == 'unescape'){
return $('<div>').html(val).text();
}else{
  return val;
}
}

まぁ似た処理をどこぞで発見したときは目からウロコが落ちた。
要はJQueryの仕様を逆手に取って(?)一度html的に吐き出した文字列を
再度抽出して返すという技。

頭柔らかい人っているんだなーっていう。
これはその応用的な感じで、メソッドにしてみた。
余り使う機会なさそうだけど、何かの際にどうぞ。


あわせて、見つけたのがPHPにおけるマルチバイト文字列置換処理。
上記に若干関わるのでついでに紹介。

プログラムソースの文字コードによって、文字のバイト数は変わってくるわけだけど
例えば、Shift-JISなら全角は1文字=2byte、UTF-8は全角・半角ともに1文字=3byteだったりする。
で、全角や半角が入り乱れた文字列内から特定の全角or半角を置換したいときは
このバイト数差が結構やっかいだったりする・・・

通常なら、preg_replaceやstr_replaceなどを利用するんだけど、
全角混じりのUTF-8の場合はどうしたらいいのかっていうと、mb_~ってのを使う。
よくある、文字列数を数える、str_lenなんかもmb_str_lenとして存在してたり。

が、何故かmb_str_replaceって存在しない!
何故じゃああああああと思って調べていたらいいコードに出会えた。


すげえ・・・さすがは先代の知恵というか経験というかw
独自に実装してたけど、PHPあたりはもう元からある程度存在してるから
Googleで探しちゃったほうが早かったりもするなー。

そんなわけで、仕事でイメージURLを抜き出して変換かけて・・っていう処理の際に
上記を組み合わせて作成し、かなり助かりましたヾ(*・ω・)ノ