トップページphp
1001コメント299KB

【PHP】下らねぇ質問はID出して書き込みやがれ 90

■ このスレッドは過去ログ倉庫に格納されています
00012009/11/14(土) 17:31:22ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 89
http://pc11.2ch.net/test/read.cgi/php/1255263534/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0737nobodyさん2009/12/02(水) 09:25:07ID:???
【社会】FreeBSDに権限昇格の脆弱性…正式版を近く公開
http://tsushima.2ch.net/test/read.cgi/newsplus/1259712523/
0738nobodyさん2009/12/02(水) 13:35:31ID:8Zgo4w9q
function hoge($a = "a", $b = "b") {
return $a.$b;
}
echo hoge();
とやった場合abと表示されます。

echo hoge("s");
とやった場合sbと表示されます。

ここでasと表示したいのですが、
第一引数はデフォルトのものを使って、第二引数だけを指定したいのですが、
どのようにやればいいのでしょうか?
0739nobodyさん2009/12/02(水) 13:36:42ID:???
hoge(null, 's')

しね
しらべろ
ぼけ
07407382009/12/02(水) 13:51:40ID:8Zgo4w9q
すみません何か勘違いしてました。
省略してやってたスクリプトがあったので質問しましたが、
引数の型が別々になっていて型で振り分けしてるようなトリッキーなものでした。
0741nobodyさん2009/12/02(水) 13:58:39ID:KEaNjFio
【OS名】WinXP(SP2) 【PHPのバージョン】php5.2.6  【連携ソフトウェア】無しです

【質問内容】
久しぶりにPHPをやろうとコマンドプロンプトで本にあるサンプルを実行したところ
下の警告が出て前に進めません。
http://uproda.2ch-library.com/193256tTF/lib193256.png
これはバージョン確認の >php -v でも出てきて右上の閉じるボタンを押すと

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php5/ext/php_sqlite.dll'
- 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP 5.2.6 (cli) (built: May 2 2008 18:02:07)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies

などと出ます。実行環境php5.2.6は本のCD-ROMから再インストールしても
駄目でした。
どうしたら良いでしょうか?
07427412009/12/02(水) 14:00:29ID:???
補足:
以前(約半年前)は問題なく実行できていました。
0743nobodyさん2009/12/02(水) 14:05:01ID:???
最新の環境揃えてください
とりあえず経験者ならxamppでも入れておけばおk
0744nobodyさん2009/12/02(水) 14:05:34ID:???
dllがないからだろボケ
0745nobodyさん2009/12/02(水) 14:45:28ID:???
ドゥルル
0746nobodyさん2009/12/02(水) 14:57:25ID:???
pdoでコネクションプーリングってどうすればいいですか?
環境はubuntu9.04とphp5.xとapache2.x
0747nobodyさん2009/12/02(水) 14:57:45ID:DXr2OxkP
間違った。あげ
0748nobodyさん2009/12/02(水) 15:06:11ID:???
PHPってコネクションプールできるんだっけか
0749nobodyさん2009/12/02(水) 15:23:37ID:???
>>748
あんた誰?なんなの?
07507412009/12/02(水) 15:30:33ID:???
>>743-744
5.3.1をインストールしてOKでした。
有難うございます。
07517462009/12/02(水) 15:34:41ID:DXr2OxkP
>>748
だめっすか。pgpoolとか必要ですか
0752nobodyさん2009/12/02(水) 15:37:21ID:HX28fxfQ
WinXP-Pro,5.2.6です。

DOS上のPHPの動作をキー入力で制御するにはどうしたら
良いでしょうか?
例えば、Enterキー1回目で動作開始,2回目で停止(終了)
とういう感じです。
0753nobodyさん2009/12/02(水) 15:39:21ID:???
ID変えて質問してる教えてクンがいるな
0754nobodyさん2009/12/02(水) 15:39:34ID:???
>>751
そうなるかなー
0755nobodyさん2009/12/02(水) 15:41:34ID:???
>>754は黙っててくれないかな^^
知らないくせに「そうなるかな」じゃねえよ
0756nobodyさん2009/12/02(水) 15:43:55ID:???
>>755
ではお答えをどうぞ
PHPでコネクションプールができるのならこっちも知りたいぐらいです
0757nobodyさん2009/12/02(水) 15:45:18ID:???
>>755
さっさと答えろよ^w^
0758nobodyさん2009/12/02(水) 15:45:37ID:???
見とけ
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=PHP%E3%81%A7%E3%82%B3%E3%83%8D%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%97%E3%83%BC%E3%83%AB&num=50
0759nobodyさん2009/12/02(水) 15:47:59ID:???
ようするに分からないのに煽るのは一人前のいつものちんぴら君なわけね
0760nobodyさん2009/12/02(水) 15:49:09ID:???
>>759
自分のことですね
0761nobodyさん2009/12/02(水) 15:49:34ID:???
ケンカするなよ・・・

>>751
とりあえずDBの種類を明記して。pgpoolってことはPostgreSQLでOK?

あとマニュアルの持続的な接続も見て。
http://jp2.php.net/manual/ja/pdo.connections.php
0762nobodyさん2009/12/02(水) 15:51:06ID:???
それはコネクションプールとちゃうで・・・
0763nobodyさん2009/12/02(水) 15:51:21ID:???
煽ってる自覚の無い>>759
0764nobodyさん2009/12/02(水) 15:56:38ID:???
結局PHP+Apacheではミドルウェア入れないとできないってことでいいのかな?
0765nobodyさん2009/12/02(水) 15:59:16ID:???
>>755
早く答えてよ
0766nobodyさん2009/12/02(水) 16:05:01ID:???
また煽られて悔しい人が連投で荒らしてるのか
飽きないね〜
0767nobodyさん2009/12/02(水) 16:06:48ID:???
残念だが俺は>>765で1回発言したきりだ
0768nobodyさん2009/12/02(水) 16:18:41ID:???
>>755
自分も知らないくせにそうなるかなーというレスが気にいらなかっただけで煽るただの餓鬼

>>757 >>759 >>760 >>763 >>765 >>766
煽りに煽りで返す阿呆集団

>>758
コネクションプーリングができるとググル先生が言ってるぞと言う厨房

>>756 >>761 >>762 >>764
まともな人間と見せかけてどこかで煽りに参加してる阿呆集団の一人
0769nobodyさん2009/12/02(水) 16:24:33ID:???
ID出たら楽しみだなw
0770nobodyさん2009/12/02(水) 22:03:26ID:???
どなたか>>40お願いします
0771nobodyさん2009/12/02(水) 22:07:55ID:???
>>770
http://jp.php.net/manual/ja/pdo.installation.php
http://jp.php.net/manual/ja/pdo.configuration.php
0772nobodyさん2009/12/02(水) 22:08:36ID:???
<<771
ありがとうございます
0773nobodyさん2009/12/03(木) 10:49:04ID:???
このスレの85%は自称自治集団によって構成されております
0774nobodyさん2009/12/03(木) 14:21:03ID:???
>>752
スクリプトファイルを入出力と処理に分けて、
入出力側は fgets(STDIN) でコマンドライン入力を受け取り
処理側スクリプトを proc_open(), proc_close() するでどうだい
0775nobodyさん2009/12/03(木) 14:59:54ID:5T9WpFv8
例外処理についてですが、

$arr = array('test1'=>1, 'test2'=>2);

try {
 echo $arr['test3'];
} catch (Exception $e) {
 echo $e;
}

これだと普通にPHPのエラーが表示されてしまいます。(Undefined index test3)
こういう使い方はダメなんでしょうか?
例外処理について教えて頂けると助かりますm(__)m
0776nobodyさん2009/12/03(木) 15:15:48ID:???
つマニュアル
0777nobodyさん2009/12/03(木) 15:23:51ID:5T9WpFv8
>>776
スレ題通り、くだらない質問かもしれませんが
マニュアルは読んでもイマイチ理解できなかったので教えてください。

例外をcatchするには、自分で例外を投げないといけないのでしょうか?
それだとぶっちゃけif文とかわらないですよね?
0778nobodyさん2009/12/03(木) 15:34:32ID:???
>>777
$arr['test3']を初期化するかerror_reporting(E_ALL ^ E_NOTICE)でもぶちこんどけ
0779nobodyさん2009/12/03(木) 15:35:31ID:???
PHPで例外処理が可能だと知らなかった俺。。
0780nobodyさん2009/12/03(木) 15:37:20ID:???
まさか例外処理も知らないでこのスレで回答してたわけじゃ・・・
0781nobodyさん2009/12/03(木) 15:40:24ID:???
例外処理とかいらねーよ
安心させる為にあるだけ
0782nobodyさん2009/12/03(木) 15:42:08ID:???
まあ最近っちゃ最近だからな
あればあったで便利だな
そろそろ4系は葬ってほしいぜ
0783nobodyさん2009/12/03(木) 15:44:40ID:???
>>775の場合は全角スペースが入ってるからエラー吹いてるんだと思う。
0784nobodyさん2009/12/03(木) 15:51:02ID:5T9WpFv8
>>778
予期せぬ値がキーに入った時の為の例外処理なわけで、初期化する位だったら例外処理も必要ないです。
というかサンプルコードが適当すぎですよね・・・すみません。
error_reportingは最終的にはオフにする予定ですが、今はまだ作成段階なのでエラー発見の為にも表示しなくてはなりません。

で、結局以下のように自分で例外を投げるようにしました。(サンプルなので、実際はこれだけのコードなら大人しくisset()使っておけば済む話なのですが。)

$arr = array('test1'=>1, 'test2'=>2);

try {
echo $this->check($arr, 'test3');
} catch (Exception $e) {
echo $e;
}

function check($arr, $index) {
if(!isset($arr[$index])) {
throw new Exception(sprintf('Undefined index %s', $index));
}
return $arr[$index];
}

>>783
全角はわざとです。見やすいほうがいいかと思い全角にしました。
0785nobodyさん2009/12/03(木) 15:51:22ID:???
>>775

<?php
echo $arr['test3'];
?>

やってみ
例外関係ないから
0786nobodyさん2009/12/03(木) 15:58:00ID:???
http://www.shigeweb.jp/php/project_p/?page=exception§ion=php5oop
0787nobodyさん2009/12/03(木) 16:02:18ID:???
2004年(笑)
0788nobodyさん2009/12/03(木) 16:06:21ID:5T9WpFv8
>>786
とても分かりやすいサイトを教えて頂きありがとうございます。
そのサイトに書かれているように、手動で「例外」を投げないと処理が実行されないという所で悩んでました。
JavaScriptだと自動で投げてくれるので、PHPもてっきりそうだと思って・・・。

万事解決です!お答えくださった皆様ありがとうございました!
0789nobodyさん2009/12/03(木) 16:12:24ID:???
万事解決なのか
エラーハンドラ使えばいいのに
0790nobodyさん2009/12/03(木) 16:17:42ID:???
的外れな回答多すぎwww
無能ばっかだなワロスwww
0791nobodyさん2009/12/03(木) 16:20:16ID:???
なんかきた
0792nobodyさん2009/12/03(木) 16:49:38ID:???
まぁ無能ばっかは同意
0793nobodyさん2009/12/03(木) 17:12:20ID:???
無能さとwの数は比例するらしいよ
0794nobodyさん2009/12/03(木) 17:45:56ID:???
まあwだらけの書き込みは頭が良くないように見えるのは確か
0795nobodyさん2009/12/03(木) 18:35:28ID:FkIkewDA
test.phpにtest.php?A=a&B=bでアクセスして、
phpと同じ階層に「a, b」というデータを記録していのですが
どういった記述にすればいいでしょう?
0796nobodyさん2009/12/03(木) 18:36:04ID:9BLN2rJ9
【OS名】Fedora10
【PHPのバージョン】php5.26
【連携ソフトウェア】Services_Twitter
【質問内容】
Twitter上で動くbotを開発しています。
現在はbotはcronで毎分呼び出されてシェルスクリプト経由でphpに渡されるのですが、
人工知能のような汎用処理系を目指しているので実行時に膨大な数の設定ファイルを読み出すため、処理に負担をかけています。
現在の処理:cronからシェルスクリプト呼び出し->phpにファイルを渡す->設定ファイルを読み出す(連想配列に格納)->随時設定を配列からロードし利用する
の設定ファイルの読み出しで多大な時間をとられています。

これを解決するためにループ処理で常時スクリプトを実行(定期的に取得と返事のみ実行)という案を考えつきましたが、
このような事は可能でしょうか。可能ならば実装方法と留意点も教えていただけるとありがたいです。
0797nobodyさん2009/12/03(木) 18:55:06ID:???
>>795
1.GETパラメータを取得
2.ファイルを書き込み属性つきでオープン
3.ファイルに書き込み(なくてもいいが書き終わったらファイルをクローズ)

あとは調べろコードもらっても勉強にならん
0798nobodyさん2009/12/03(木) 18:56:20ID:???
>>796
Gearmand導入してみたら
0799nobodyさん2009/12/03(木) 19:31:03ID:???
>>796
max_exection_timeを0にしてwhile(true)
0800nobodyさん2009/12/03(木) 19:32:54ID:???
>>797
できた!!!!!!!!!!!!!
お前様にとてつもなく感謝する。
0801nobodyさん2009/12/03(木) 19:35:18ID:APsxzQ0B
【PHPのバージョン】php4.3.9
4.3.10 からサポートされた、sprintf フォーマットのロケールに依存しない
浮動小数点数表現 F と同じ動作を実現するにはどうしたらいいですか?
0802nobodyさん2009/12/03(木) 19:45:06ID:???
PHPをバージョンアップするのが一番楽
0803nobodyさん2009/12/03(木) 19:49:22ID:9BLN2rJ9
>>798
>>799
ありがとうございます。なんとかなりそうです。
0804nobodyさん2009/12/03(木) 21:04:31ID:DjsgAevR
どうしてもShiftJISにする必要があって、UTF8からmb_convert_encodingで変換してるんだけど、
sjis,sjis-winに無い文字が含まれるとき、?になるときとならない時があって困ってます。
タイミングによって結果が変わるのも解せないんだけど、同じことで悩んでたりスマートな解決策わかる人いませんか。
0805nobodyさん2009/12/03(木) 21:08:03ID:???
元データをsjisで作り直す
0806nobodyさん2009/12/03(木) 21:08:31ID:???
出力する前に正規表現でsjis範囲外の文字を削除するか別の文字に置き換えるといい
0807nobodyさん2009/12/03(木) 21:14:56ID:DjsgAevR
>>805
元はUTF8なんですよ。TwitterAPI。
毎回結果かわるからconvert_encodingはだめだし。

>>806 の方法試してみます。
mb_encode_numericentityが使えそうな気がしてきた。
0808nobodyさん2009/12/03(木) 21:19:13ID:???
携帯かWindowsのCUIで使う以外ならShift-JISを使うのはやめて方が良い
0809nobodyさん2009/12/03(木) 21:29:47ID:R411r6if
わかる人いたら教えてください!!

WordPressでカテゴリーを表示する「wp-dtree」というプラグインがあるのですが、
カテゴリーが二階層以上になったとき、そのカテゴリーに所属する記事数の計算が合いません。

(例)
A は B の親カテゴリーです。
B は C, D の親カテゴリーです。
C というカテゴリーに 2 つの記事が紐づいています。
D というカテゴリーに 3 つの記事が紐づいています。

【標準の動作】
A (5)
└ B (5)
 ├ C (2)
 └ D (3)

【WP-dtree】
A (10)
└ B (5)
 ├ C (2)
 └ D (3)

子や孫のカテゴリーに所属する記事数まで、すべて足し合わせるようなコードになっているのが原因だと思いますが、
どう直せばいいのかわかりません。

よろしくお願いします。

wp-dtree のコード
http://www.happy-pass.jp/wp-content/plugins/wp-dtree/
0810nobodyさん2009/12/03(木) 21:32:41ID:???
標準の方使えばいいんじゃないの?
0811nobodyさん2009/12/03(木) 21:33:25ID:DjsgAevR
>>808
出来ればutfにしたいけど、2ch専ブラで見るのでどうしても…
とりあえずUTF8とsjisのコード範囲調べます。
0812nobodyさん2009/12/03(木) 21:33:57ID:???
>>809 スレ違い

WordPress (ワードプレス) その14
http://pc11.2ch.net/test/read.cgi/blog/1254473826/

【 スクリプト改造依頼スレ】(丸投げ) part7再々
http://pc11.2ch.net/test/read.cgi/php/1222645553/
0813nobodyさん2009/12/03(木) 21:37:31ID:???
>>811
Shift-JIS範囲外の文字は数値参照に置き換えれば文字を削除せずに済む
0814nobodyさん2009/12/03(木) 21:38:58ID:DjsgAevR
>>809
wpあんまり詳しくないけど、階層表現なら入れ子集合モデルが好きです。
0815nobodyさん2009/12/03(木) 21:41:08ID:APsxzQ0B
>>802 ありがとうございます。
RHEL4のrpmが4.3.9で、そこから動かせない場合にはどうしようもないってことでしょうか。
0816nobodyさん2009/12/03(木) 21:41:15ID:DjsgAevR
>>813
UTF8上のShiftJISの範囲って、なんか飛び飛びでしたっけ?
0817nobodyさん2009/12/03(木) 21:42:23ID:R411r6if
>>809
wp-dtree_gen-functions.php

の133〜135行目

foreach($children as $child){
$count += $child->category_count;
}

が原因のように考えられるのですが、どう直せばいいのかがわかりません。

下記は試しましたが、うまくいきませんでした。

【この3行を削除】
A (0)
└ B (0)
 ├ C (2)
 └ D (3)

【$count = $child->category_count; に変更】
A (1)
└ B (2)
 ├ C (2)
 └ D (3)

foreachという構文を使っていることに原因があるようにも思いますが、やはりどう直せばいいかがわかりません。
0818nobodyさん2009/12/03(木) 21:46:57ID:R411r6if
wp-dtree_gen-functions.php

の110〜132行目(参考)

function wp_dtree_get_count($nodedata, $treetype){
global $wpdb;
$idtranspose = wp_dtree_get_id_transpose();
$count = '';
if($treetype == 'cat'){
$catid = $nodedata['id']-$idtranspose['cat']; //DONT put this calculation in the parameter list. http://wordpress.org/support/topic/148638?replies=3
$catobj = get_category($catid);
$count = $catobj->category_count;
$children = get_categories( //a roundabout way to get the padded count of this category...
array(
'type' => 'post',
'child_of' => $catid,
'orderby' => 'ID',
'order' => 'DESC',
'hide_empty' => false,
'include_last_update_time' => false,
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'number' => '',
'pad_counts' => 1
)
);
0819nobodyさん2009/12/03(木) 21:48:26ID:???
おいおい
0820nobodyさん2009/12/03(木) 21:49:19ID:???
twitterのTLをdatに吐き出してJaneStyleで見てるけど、特に化けたりとかはしてないな。
エンコード変換以外に必要なのは、実体参照になってるのを戻してやるぐらいか。
0821nobodyさん2009/12/03(木) 21:50:38ID:???
>>817-818
>>812
0822nobodyさん2009/12/03(木) 21:52:49ID:R411r6if
>>810
このプラグインを使うとカテゴリーをExplorer状に折りたたんで表示することができるんです。
同じようなプラグインはあるのですが、これが一番見た目はよくできているのです。
0823nobodyさん2009/12/03(木) 21:54:33ID:R411r6if
>>821
そこで聞いてみます。すみません。
0824nobodyさん2009/12/03(木) 21:55:55ID:DjsgAevR
>>820
まさにそれ作ってます。
2chのAAで使われるような絵記号とか3/4スペースとかあるとおかしくなりませんか?
うちの環境だと、convert_enc〜が何も吐かない時と?を吐くときとランダムで、
DATサイズ合わないので困ってます。
ttp://labs.moene.ws/2wit/
0825nobodyさん2009/12/03(木) 22:37:07ID:???
>>824
$string = "abc"; //UTF-8でエンコードされた文字列
$length = mb_strlen($string,"UTF-8"); //文字数を取得
$return = "";
for($i = 0; $i > $length; $i++){
  $return .= "?".mb_convert_encoding($str,"Unicode","UTF-8").";";
}

文字列を全部数値文字参照に変換するものを書いてみた
forの中にShift_JISの範囲内に入っているかを判別する式を書いて振り分ければ望んだ動作になるはず
0826nobodyさん2009/12/03(木) 22:38:42ID:???
  $return .= "?".mb_convert_encoding($str,"Unicode","UTF-8").";";

  $return .= "&#".mb_convert_encoding($str,"Unicode","UTF-8").";";
だ、ミス。
0827nobodyさん2009/12/03(木) 22:40:00ID:???
ああ、中途半端に送信してたこれが正しいやつね。
$return .= "&#".mb_convert_encoding($string{$i},"Unicode","UTF-8").";";
0828nobodyさん2009/12/03(木) 22:44:49ID:???
探してみたら拡張ラテン文字(TURNED K: ?)をユーザ名に使ってる人のが
当然のように化けてた。
# Twitでも化けてたから(見た目は同じ?に置換)見慣れてしまってて気付かなかった。

コードは取れるだろうから素直にHTMLの数値参照に置き換えるのがベストなんだろうな
0829nobodyさん2009/12/03(木) 22:44:55ID:ZvKoTbw+
>>824 です。帰宅しました。
>>825-827
おおお。ありがとうございます!
ちょっくら試してみます。Unicode、考えてもいませんでした。
あとはUnicode<>ShiftJISの対照テーブルですね。
0830nobodyさん2009/12/03(木) 22:48:50ID:???
>>829
何かおかしいと思って動かしてみたら動かなかった。肝心の数値に変換するところを忘れてたわ何度もスマン

  $return .= "&#".hexdec(bin2hex(mb_convert_encoding($string{$i},"Unicode","UTF-8"))).";";
0831nobodyさん2009/12/03(木) 22:52:17ID:ZvKoTbw+
>>825-827
そこなんですよね。
今の環境(PHP5.2.5)だと、?にすらならずにNULLで返ってくることがあるという。。。
さっき教示いただいた方法と、mb_encode_numericentityの方法とを試してみます。
SJISとのコード範囲が直接対応しないので今泣いてますw
>>830
ちゃんと脳内補完しておりました。いろいろありがとうございます。
もし躓いたらアドバイスいただけるとうれしいです。。。
0832nobodyさん2009/12/03(木) 23:02:23ID:???
$return .= "&#".hexdec(bin2hex(mb_convert_encoding($string{$i},"Unicode","UTF-8"))).";";

$return .= "&#".hexdec(bin2hex(mb_convert_encoding(mb_substr($string,$i,1,"UTF-8"),"Unicode","UTF-8"))).";";
マルチバイト考慮してなかったわ、、頭が回ってないな
0833nobodyさん2009/12/03(木) 23:12:10ID:ZvKoTbw+
>>832
Unicode.orgのJIS資料見てました。さんくすです。
0834nobodyさん2009/12/04(金) 00:51:20ID:pWkVeJ5L
>>832
ほんとうにありがとうございました。解決しました。
SJISのテーブルを配列で持って、in_arrayで判定していますが
ちょっとロス多いし重いので改善します。
0835nobodyさん2009/12/04(金) 01:09:35ID:???
>>834
$string = "【PHP】下らねぇ質問はID出して書き込みやがれ 90";
$length = mb_strlen($string,"UTF-8");
$return = "";
for($i = 0; $i < $length; $i++){
  $now = mb_substr($string,$i,1,"UTF-8");
  if(preg_match("/[\0-\ff]|[ -滌]|[漾-K]/",bin2hex($now)) == 1) {
    $return .= $now;
  }else{
    $return .= "&#".hexdec(bin2hex(mb_convert_encoding($now,"Unicode","UTF-8"))).";";
  }
}

正規表現で纏めると楽。

動かしてないからバグ含むかもしれないが
0836nobodyさん2009/12/04(金) 01:10:53ID:???
if文の所はbin2hexいらなかったな
■ このスレッドは過去ログ倉庫に格納されています