2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【技術者】難しい話をするスレ【Haskell】

1 :名無しさん:2014/05/22(木) 00:02:01.28
雑談スレで話すとROMっちゃうお嬢様方に配慮して
サーバーやプログラム等の難しい話はこっちでするスレ

76 :名無しさん:2014/06/23(月) 12:01:59.29
c で {} がダメ文字ってのは JSON でデータ扱ってるんかな

素の dat のままでなくその種のもので扱うなら
XML の方が問題起きにくそうだけどなぁ
ユーザが入力した <> は &lt;&gt; に変換されるし
その他文中に入るタグは限られるというか
CDATA セクションに突っ込めばタグも気にしなくていいし

77 :名無しさん:2014/06/23(月) 14:36:18.33 ID:7JzZLnV/S
>>76
簡単に書くと
$raw = file_get_contents(datのURL);
mb_convert_encoding($raw,"UTF-8","SJIS-WIN");
でここまでは正常に表示できて
中身をhtmlspecialcharsしてから
テンプレートエンジンを使用して
表示しているだけです。

78 :名無しさん:2014/06/23(月) 14:50:00.39 ID:NuQNw4S1F
datをUTF8に変換してhtmlspecialcharsしてさらにShift-jisに変換してるって事?
htmlspecialcharsでShift-jis指定のほうがよくない?

79 :名無しさん:2014/06/23(月) 15:59:51.99 ID:7JzZLnV/S
>>78
$raw = file_get_contents(datのURL);
$response = mb_convert_encoding($raw,"UTF-8","SJIS-WIN");

foreach(explode("\n",$raw) as $key => $data){
@list($name,$mail,$day,$hon) = explode("<>",$data);
$name_ss = preg_replace("/\s*?<\/?b>\s*/i","",$name);
$name_s = htmlspecialchars($name_ss,ENT_QUOTES,"SJIS-WIN");
$mail_s = htmlspecialchars($mail,ENT_QUOTES,"SJIS-WIN");
$day_s = htmlspecialchars($day,ENT_QUOTES,"SJIS-WIN");
$title_s = htmlspecialchars($title,ENT_QUOTES,"SJIS-WIN");
$hon_s = mb_convert_encoding($hon,"UTF-8","SJIS-WIN");
@$list[$key]['name'] .= mb_convert_encoding($name_s,"SJIS-WIN","SJIS");
@$list[$key]['day'] .= $day_s;
@$list[$key]['hon'] .= mb_convert_encoding($this->links($hon_s),"SJIS-WIN","UTF-8");
}

function links($txt){
$pat = '/((?:https?|ftp):\/\/[-_.!~*\'()a-zA-Z0-9;\/?:@&=+$,%#]+)/u';
$pat2 = '/<a href="\/test\/read.cgi\/([a-zA-Z0-9]+)\/([0-9]+)\//u';
$pat3 = '/([0-9]+)" target="_blank">/u';
$after = '<a href="\1">\1</a>';
$after2 = '<a href="\1">';
$txts = preg_replace($pat2,"",$txt);
$ret2 = preg_replace($pat3,$after2,$txts);
$ret= preg_replace($pat,$after,$ret2);
return $ret;
}
こんな感じにしてみました。

80 :名無しさん:2014/06/23(月) 17:21:28.56
http://sweet.2ch.sc/test/read.cgi/laplace/1400347531/286
http://c.2ch.sc/test/-/laplace/1400347531/286

状況変わらず

wget -q -O- sweet.2ch.sc/laplace/dat/1400347531.dat | sed -n 286p | php -R 'echo mb_convert_encoding($argn,"UTF8","SJIS-win");'
wget -q -O- sweet.2ch.sc/laplace/dat/1400347531.dat | sed -n 286p | php -R 'echo htmlspecialchars($argn,ENT_QUOTES,"SJIS-win");'

こういうことやっても正常に表示されるし
むしろテンプレートエンジンとやらの方に原因がありそう...

81 :名無しさん:2014/06/23(月) 17:50:34.25
名前欄でも消えるしテンプレートエンジンか
Smartyとかだと{ }がデリミタだっけ?
テンプレートでevalでも使ってるのかな

82 :がんじゃ兄貴 ◆U18g7nxod6:2014/06/24(火) 00:53:44.85 ID:uZ3oSSdVp
foreachで$rawから展開したデータ入れてる?
$responseでエンコ済みの文字列から展開は出来ないのかな。
処理側がUTF-8のように見えるので・・・・。
見当違いならスマンソ。

83 :名無しさん:2014/06/24(火) 07:44:26.83 ID:4MfRC/9KY
別のテンプレートエンジンを使った物に書き直した物に入れ替えてみました。
多分、文字化けは解消されたと思います。
# 前は、pattemplateを使用していました。

84 :名無しさん:2014/06/24(火) 08:04:00.30
http://sweet.2ch.sc/test/read.cgi/patisserie/1399111309/239
直ったかな
http://sweet.2ch.sc/test/read.cgi/laplace/1400347531/286-290
http://c.2ch.sc/test/-/laplace/1400347531/286-290

総レス数 356
109 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★