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

【PHP】くだらねぇ質問はここに書き込みやがれpart8

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/08/08(月) 01:18:55ID:54u1h4+D
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
0784nobodyさん2005/08/29(月) 00:50:15ID:???
>>782
(・ε・)?
0785nobodyさん2005/08/29(月) 04:01:32ID:???
バージョン違いの吸収にextract($_POST);入れるのって
if (phpversion() >= "4.1.0")書いたほうがいい?なくてもかまわない?
0786nobodyさん2005/08/29(月) 06:50:29ID:???
>>783
関数内でincludeすればグローバルスコープの名前空間が汚れにくくなる利点もあるわけだが。
ヒント:ケースバイケース

>>785
extract使わずに修正するのは無理な状況なの?
07877852005/08/29(月) 08:15:47ID:???
>>786
レスさんくす。
最近PHPはじめたんだけど、なんこかの配布サイトのソース見ると、
if (phpversion() >= "4.1.0") {
extract($_POST);
}
って書いてあるのが結構あるのよね。
おまじないなのか、別に必要がないのか検索してもいまいちさっぱりで。
バージョンによってはこれをかかないとPOSTされたデータが入らないとかあるんだけど、互換?バージョンによってはエラーになったりするのかな?
07887772005/08/29(月) 08:24:37ID:???
すいませんぐぐったりしたんですができませんでした。
ループさせないほうがいいのでしょうか?
0789nobodyさん2005/08/29(月) 08:27:33ID:???
>>787
ttp://www.php.net/manual/ja/language.variables.predefined.php
$_POSTが使えるようになったのは4.1.0以降。(register_globalsのデフォルトがoffになったのは4.2.0以降。)
4.1.0以前は、$HTTP_POST_VARSを使うか、$POST変数名を使っていた。
0790nobodyさん2005/08/29(月) 08:43:05ID:???
>>787
PHP4.0以下でregister globalsがoffだと動かない
if (PHP_VERSION < "5.0.0") {
extract($HTTP_POST_VARS);
}
0791nobodyさん2005/08/29(月) 09:03:22ID:???
>>788
いい加減しつこい。
というか、そんな聞き方で答えてもらえる(答えられる)わけないだろ。

そもそも、ここに貼ったソースを見る限りだと、このスレの>>757からのレスすら読んでないみたいだし
0792nobodyさん2005/08/29(月) 11:18:25ID:???
SJISの文字列の中から最初に全角数字が出てくる位置を
取得したいと思い・・・mb_ereg_matchを使ってできると
思いきや、マニュアルには位置を返す記述がないので
できないのかなと思ってます。

全角数字が出てくる位置は
どのようにしたら取得できるのでしょうか?
0793nobodyさん2005/08/29(月) 11:27:12ID:???
ごめん。mb_eregでできそう age
0794nobodyさん2005/08/29(月) 12:18:28ID:???
ごめん。やっぱわからん。
0795nobodyさん2005/08/29(月) 12:33:45ID:s5T6oqi1
>>794
file()
でファイルを全部配列に読み込む。
んで、mb_ereg を使って全角文字があるかどうかをループで探していけば配列番号わかるでしょ。
配列位置=行目だから。
0796nobodyさん2005/08/29(月) 12:59:01ID:???
>>795
行じゃなくて何文字目かを知りたいんじゃないの
mb_ereg+mb_strposで出来ないかな
0797nobodyさん2005/08/29(月) 13:00:29ID:???
>>795
792が知りたいのは○行目ではなく1行中の文字位置では?
「abc8def」なら4文字目とか。
07987972005/08/29(月) 13:01:12ID:???
結婚してしまった…
0799nobodyさん2005/08/29(月) 13:07:56ID:YewHBwdY
PHP 4.3でWEBページの表示を行っています。
通常ページは問題ないのですが、フレームページではフレーム内が
表示されません。
$val = file_get_contents("http://www.aa.com/index.html");
echo $val;
やら、
$fp = fopen("http://www.aa.com/index.html", "r");
while (!feof($fp)) {
echo fgets($fp, 1024);
}
fclose($fp);
やらを試しました。
宜しくご教授願います。
08007952005/08/29(月) 13:10:44ID:???
あー、何文字目かってことか。
だったら、さっきの配列で見つけた行にたいして
mb_strposやればいいんでねーの?
0801nobodyさん2005/08/29(月) 13:21:29ID:???
とほほ

mb_strposを10個並べるか
1文字ずつローラ作戦を決行するしか
ないのですね。
0802nobodyさん2005/08/29(月) 13:31:32ID:???
preg_split(全角にマッチするパターン, 検索文字列, -1, PREG_SPLIT_OFFSET_CAPTURE);
0803nobodyさん2005/08/29(月) 13:39:14ID:???
>>799
表示されない原因は、<frame src>のURIが正しくないからなので、
そこを正しいURIに直してあげればいいですよ。
具体的なソースは面倒なのでパス。
0804nobodyさん2005/08/29(月) 13:46:56ID:???
>802
preg_splitは全角が利かなかったので
mb_splitにして戻ってきた配列からの0要素の文字数をカウント
することにしました。
<thinks src='みんな'>ありがとう</thinks>
0805nobodyさん2005/08/29(月) 13:53:46ID:???
>>804
PHPのバージョン何使ってる?
0806nobodyさん2005/08/29(月) 13:55:02ID:bRBqfQsi
PHPをアップローダを作っているのですが、ダウンロードの時に化けてしまいます。
FTPでバイナリ転送でダウンロードすると化けていないので、
アップロードはうまく言ってると思うのですが・・・
どこが間違っているのでしょうか?
PHPのバージョンは4.3.10、apacheを使っています。
よろしくお願いします。

header ("Content-type: application/octet-stream");
header ("Content-Transfer-Encoding: binary");
header ("Content-Disposition: attachment; filename=" . $fname);
header ("Content-length: " . filesize( $fname));
readfile ($fname);
0807nobodyさん2005/08/29(月) 14:01:26ID:pua4PW6B
掲示板を作ったんですが、書き込みの際にIPを取得するようにしたんですが、何故かlocalhostとしか取得できません。
ローカル、レンサバとも同じ状態です。
HPのTOPに置いてあるアクセス解析は正常に取得してるようなのですが。。
自分なりに調べて見たのですが、さっぱり解らずに困っています。
何が原因なのでしょうか。。
0808nobodyさん2005/08/29(月) 14:01:41ID:???
>>804
mb_eregとかで最初に出現した全角数字を取って
mb_strposで、取得した全角数字の場所取るってのは?
0809nobodyさん2005/08/29(月) 14:05:29ID:???
すんません。>>792氏の関係で正規表現について教えて欲しいのですが、
半角数字のパターンは[0-9]だと思いますが、全角数字のパターンはどうすればいいのでしょうか?
[0-9]としたら範囲が空とエラー吐かれました。
08108092005/08/29(月) 14:22:42ID:???
>>804

実験的なステータスらしいが、mb_ereg_search_pos ってのがある。PHP4.2以上。
ttp://www.php.net/manual/ja/function.mb-ereg-search-pos.php
でもイマイチ使いづらいかも。
0811nobodyさん2005/08/29(月) 14:27:06ID:???
>>809
[0|1|2|3|4|5|6|7|8|9]
0812nobodyさん2005/08/29(月) 14:43:41ID:???
>>803
有難うございました。
無事、表示されました。

あと、Basic認証内ファイルの場合ですが、
indexは"Authorization: Basic"でクリアできますが
フレーム部分では認証がポップアップされます。
よろしければこの対策についてご教授願えますでしょうか?
08138102005/08/29(月) 14:48:45ID:???
>>811
うまくいかんです。関数の問題なのか、正規表現の問題なのか?

$ptn = "[0|1|2|3|4|5|6|7|8|9]"; //全角数字
$str = "abc8d2e89f"; // 結果 [0] => 7 , [1] => 1
//$str = "今日は8月28日"; // 結果 [0] => 1 , [1] => 1
mb_ereg_search_init($str);
$ary = mb_ereg_search_pos($ptn); // [0]は一致した先頭の位置、[1]は一致した長さ(バイト数)
print_r($ary);

$ptn = "8"; にすると [1] => 2 になるし。
0814nobodyさん2005/08/29(月) 14:55:26ID:???
>>813
スクリプトの文字コードと内部エンコード合わせてますか
0815nobodyさん2005/08/29(月) 14:55:31ID:???
>>813
文字クラスはダメだ。16進で指定してみれ。
08168062005/08/29(月) 15:02:25ID:???
>>806のreadfile ($fname); を、
fopenしてからfgetc一回したら3バイトのファイルができました。
2回fgetcしたら4バイトになりました。(相変わらず化けてます)
PHPの原理がよくわかってないので、なんか変な感じです。
これは設定が悪いのでしょうか?どなたかヒントください。
08178132005/08/29(月) 15:45:59ID:???
>>814
813ではスクリプト=EUC-JP、内部エンコード=SJISでした。
なので、mb_internal_encoding("EUC-JP"); としましたが結果は同じです。

>815
ここ(ttp://ash.jp/code/codetbl2.htm)見るとEUCでは「0」=A3B0、「9」=A3B9なので
$ptn = "[0xA3B0-0xA3B9]";
としましたがマッチしませんでした。
指定方法が根本的に間違ってるのかな?
0818nobodyさん2005/08/29(月) 15:58:06ID:???
16進エスケープは\xFFとかじゃ?
ってか、POSIXのEREって16進エスケープ対応してんの?
0819nobodyさん2005/08/29(月) 16:43:09ID:???
しばらく目をはなした隙にオソレスになりました。

>>805
PHP4.3.10です。
もしかしてPHP5なら全角でもOK?

>>796>>800>>808
mb_eregを使ってマッチした文字列から
非正規表現でマッチさせればよかったのですね。
勉強させていただきました。
0820nobodyさん2005/08/29(月) 16:43:35ID:???
>>788
ループさせるのは間違いじゃないが、$aaaの添字に$iを使ってしまうと、
行(外側のwhileループ)ごとに0から始まるから、
$aaa[0]が何度も上書きされることになりやすい。
$aaaの添字には別の変数を使え。

それから、最後の出力テストはprint_rを使うと便利。

もう1つの間違いについては>>778
08217852005/08/29(月) 17:50:13ID:???
>>789.790
サンクス
とりあえず、自分の環境ではないと動かないしあると動くので、おまじないと思って付けておきます。
0822nobodyさん2005/08/29(月) 18:25:09ID:???
         ( ( ( ) > ̄    ヽ、)),'^^'' 、
          , -―ー '"   ;   '     7   !)
         / , '"^、 `ー-、 _, -ー   !   /'|
      |'   _ミ7ゝ     ,.    !   / |
         ||  Y'    ::y'     :   |  |
       |.|   |     :     :   |  !
          |'   ! .'o,   |  '.o, !   |,/
       |   ヽ、  ,人     ノ   |
       !     | `゛´   ` ー 'ヽ   ノ
          i    |           ヽ、_, '
          ヽ、__ ノ          /
0823nobodyさん2005/08/29(月) 19:19:57ID:???
MySQLにデータを突っ込むときに勝手に\マークがエスケープされるんですが
どこをいじったらなおりますか?
08248232005/08/29(月) 19:27:17ID:???
表示するときにstripslashesで¥をトって表示して
MYSQLに入れるときにaddslashesで¥を付けていれたらいいのれすか?
0825nobodyさん2005/08/29(月) 21:21:05ID:???
円マーク2個重ねて
0826nobodyさん2005/08/29(月) 21:23:52ID:???
レンタルサーバーでPHPからImageMagickを動かしていたのですが
これをローカルで動かせるようにするにはどうしたらよいのでしょうか。

Apache2.0.54.0、OSはWinXPSP2、PHP5、
ImageMagick-6.2.0-Q16-windows-dll.exeを使いImageMagickをインストールした
ところまで来ました。
0827nobodyさん2005/08/29(月) 21:29:00ID:???
move_uploaded_file()について質問があります。
環境は以下の通りです。
Win XP
PHP 5.0.4
Apache 2.0.54

また、(ない知識を絞ったうえで)関連すると思われるphp.iniの設定は、
safe_mode = Off
register_globals = Off
doc_root =
file_uploads = On
upload_tmp_dir = "C:/tmp"
upload_max_filesize = 2M
です。

このような環境下で
move_uploaded_file($_FILES['file']['tmp_name'], $_FILES['file']['name']);
を実行すると、
Apache2のインストールディレクトリに$_FILES['file']['name']な名前の
ファイルが作成(移動)されてしまいます。
つまり、phpスクリプトが置かれているカレントディレクトリにファイルが移動されないんです。
この問題については、
http://jp.php.net/manual/ja/function.move-uploaded-file.php
に「Darrell」という方がそれらしい情報を投稿してくださってますが、
その解決策のようなものが見当たりません。

なので、よろしければ、
同じような問題に遭われた方がいらっしゃれば、
解決策や回避策など教えていただければと思います。
長文失礼しました。
08287742005/08/29(月) 21:54:14ID:???
遅レスすいません。
レスありがとうございます。

>>775
コマンド使えませんでした・・・。

>>776
それを参考にして色々やってみたいと思います。
ありがとうございました。
0829nobodyさん2005/08/29(月) 22:07:57ID:???
最近PHPを勉強し始めたのですが、
PostgreSQLをインストールして、PHPからアクセスするために
PHPのpgsqlモジュールが必要になりました。
ほかのモジュールをそのままでpgsqlモジュールだけ追加して使う方法は
あるのでしょうか。それともPHPの再インストールが必要なのでしょうか。
よろしくお願いします。

MacOSX10.3.9
Apache1.3.33
PHP4.3.9
PostgreSQL8.0.2
08308292005/08/29(月) 22:12:42ID:???
Mac板のプログラミングスレから誘導されてきました。
0831nobodyさん2005/08/29(月) 22:13:06ID:???
論理積について質問があります。
if (!isset($x) && !isset($y)) {
echo $giko;
}
else {
echo $mona;
}
上記のように条件分岐させているのですが、
$mona を表示させるか否かのみを判定したい場合はどの様にするのが格好いいでしょうか。
今のところは
if (!(!isset($x) && !isset($y))) {
echo $mona;
}
こんな風に対処したのですが、なんかカッチョ悪い・・・
0832nobodyさん2005/08/29(月) 22:16:37ID:???
>>823-824
>>672で既出
0833nobodyさん2005/08/29(月) 22:17:45ID:???
>>831
単純に
if(isset($x) && isset($y)) {
echo $mona;
}
でいいんじゃないの?
0834nobodyさん2005/08/29(月) 22:20:25ID:???
>>831
要は $x か $y のどちらかがセットされていたら $mona を表示でいいんだろ?
これではダメなん?

if (isset($x) || isset($y))
 echo $mona
0835nobodyさん2005/08/29(月) 22:24:45ID:???
>>831
それでいいんじゃないの?
if (!isset($x) && !isset($y)) { ; } else { echo $mona; }
って書き方もありっちゃあり。

ただ、!a && !b ってのは a || b と等価なんで(ド・モルガンの法則って奴)
>>831の上の奴は
if (isset($x) || isset($y)) { echo $giko; } else { echo $mona; }
下の奴は
if(!(isset($x) || isset($y))) { echo $mona; }
と置き換えられる。
0836nobodyさん2005/08/29(月) 22:30:14ID:???
あとは
echo (isset($x) || isset($y)) ? $giko : $mona;
くらいかな。
08378312005/08/29(月) 22:41:33ID:???
>>833-836
即レス有り難うございます!
ド・モルガンの法則・・・ウッ頭痛が・・・

三項演算子も使えたんですね。いつか使ってやろうと狙っているのですが思い浮かんだ試しがない・・・

早速書き直します。サンクス!
0838nobodyさん2005/08/29(月) 22:46:48ID:???
>>829
こっちも微妙にスレ違いだと思うけど…。
もとのPHPを残したいのはSoftwareUpdate対策?

手元にmacが無いので、ちゃんとは分からないけど、
普通にコンパイルオプション付けて入れ直したらよいのでは。
私はそうしてました。
んで、そのコンパイルオプションは、
デフォルトで入っている PHPの phpinfo() をコピペして必要なのを追加、がオススメです。

どうしても気になるなら、/usr/local/ に入れるなりして回避してください。
0839nobodyさん2005/08/29(月) 23:05:06ID:???
>>829
可能かもしれないし、駄目かもしれない。
使ってるPHPはどうやって作ったん?
取り敢えずpgsql.soとMac、php辺りでぐぐれ。
0840nobodyさん2005/08/29(月) 23:14:43ID:???
>>839

>>829のPHPは、macに標準で入ってるやつでしょう。
mac用のpgsql.so だけ配ってるなんて聞いたこと無いし。
なるべく他の環境を変えないようにするには、
ソース持ってきてコンパイルしか無かったと思う。
08418272005/08/29(月) 23:20:36ID:???
自己解決しちゃいました。
move_uploaded_file($_FILES['file']['tmp_name'], $_FILES['file']['name']);
↓
move_uploaded_file($_FILES['file']['tmp_name'], getcwd()."/".$_FILES['file']['name']);
この変更で、move_uploaded_file()がちゃんと動く鯖でも、
僕のような問題が起こる鯖でも、どちらでもちゃんと動きそうですね。
初歩的な質問な気がして、はずかしい・・。

ご迷惑をおかけしました。
ですが、もしphp.iniの設定などで今回の問題が直せるのでしたら、
ご存知の方是非教えてください。以上です。
0842nobodyさん2005/08/29(月) 23:51:18ID:???
何だか物凄い勢いで流れたので・・・再投稿スマソ。

ローマ字で
 aiueonn
と入力すると
 あいうえおん
と返してくれるライブラリーってないですか?

Javascriptでは見たことあるのですがPHPでないですかね?

宜しくお願いします。
0843nobodyさん2005/08/29(月) 23:55:01ID:???
自分で作ればええやん、と思いながら見てたけど、誰もレスしてなかったのか。。
0844nobodyさん2005/08/29(月) 23:55:51ID:???
>>842
自分は見たことない
JavaScriptのソースがあるなら、それ参考に作っちゃった方が早い気がする。
0845nobodyさん2005/08/30(火) 00:20:18ID:???
FORMで確認画面に遷移セッションに値格納
    ↓
submit
    ↓
セッションデータのデータをメールへ送信
unset( $_SESSION[data] ); //セッションデータを削除
    ↓
header('location: aaa.htm'); // 別ページへジャンプ

上記のようなスクリプトがあるんですけど。
ジャンプで飛ばした後、ブラウザの戻るを実行するとunsetした
セッションが復活してしまいます。

完全に消す方法はあるのでしょうか。
unset( $GLOBALS[_SESSION][data])でも消えませんでした。


0846nobodyさん2005/08/30(火) 00:23:00ID:???
>>829
phpのソースパッケージをダウンロードしてきて、
$ tar zxvf php-x.x.x.tar.gz
$ cd php-x.x.x/ext/pgsql
$ phpize
$ ./configure --with-pgsql=/path/to/postgres
$ make
$ sudo make install

いつもモジュールが欲しくなった時はこんな感じでやっつけてる。
あとはdl()かphp.iniでロードするだけ。

ひょっとしたらapacheでDYLD_LIBRARY_PATHを設定する必要があるかも
それはpostgresのインストール方法次第だと思うけど、postgres使った事無いからわからん。

/path/to/postgres がどこかは自分で考えろよ。
08478292005/08/30(火) 00:55:02ID:???
>>838,839,840,846
レスありがとうございます。

>>840さんのおっしゃる通りMacに標準ではいっているPHPです。
それでソースから全部インストールするのを躊躇っていました。

phpinfo()からConfigure Commandをコピペして
"--with-pgsql='postgresのパス'"を加えて再インストールしてみます。

DYLD_LIBRARY_PATHのことはこれから調べてみます。
ありがとうございました。
0848nobodyさん2005/08/30(火) 01:02:01ID:???
>>842
質問してばっかだなお前ーぶぶぶーwww
ただ置換すればいいだろぼけなすーwwwww
そんくらい自分で書けやかすーwwwwww
0849nobodyさん2005/08/30(火) 01:07:11ID:FCdiEo7p
./A.html →(ファイル内呼び出し)→ ./script.php →(データ読み書き)→ ./data.log

こんな感じでPHPだけ"script.php"というファイルにまとめていろんなファイル
から呼び出しています。さらに"script.php"からデータの読み書き用に"data.log"という
ルートにあるファイルにアクセス。

さて、ここで

./folder/B.html →(ファイル内呼び出し)→ ./script.php →(データ読み書き)→ ./data.log

という呼び出しをしたとき、script.phpが"./data.log"にアクセスできないと
エラーを返します。つまり"./folder/data.log"にアクセスしようとしてエラーに
なっているんですね。呼び出すhtmlファイルの場所に依存してscript.phpから
毎回エラーを返されるのは正直鬱陶しいんですがみなさんどうされてます?

せめてscript.phpからdata.logを相対パスで呼んでくれればこんな問題は
生じないんですがね。
0850nobodyさん2005/08/30(火) 01:13:27ID:???
>>848
単純な置換で事足りるわけない。
お前がやってみろクズ
0851nobodyさん2005/08/30(火) 01:29:52ID:???
>>850
図星突かれてそんなに悔しかったのか?wwwwww
誰がいつどこで「単純な置換で事足りる」っつったんだ?wwwwwww
本人だとしたらさすがすぎるwww低脳丸出しだなwwwwww
0852nobodyさん2005/08/30(火) 01:30:41ID:???
>>850
別に単純な置換繰り返すだけで出来る気がするんだけど?
元のJavaScriptとやらの提示がいないので、ご希望の精度が得られるかどうかは不明だけど。

というか、正規表現置換(ereg/preg_replace)とかstr_replaceとかだけが置換じゃないよ。
自分でパターンを置き換える処理も立派な置換だ。

んで、作れって言うんだったらスレ違い。↓へどうぞ。
■こんなCGI作ってください■
http://pc8.2ch.net/test/read.cgi/php/1102980903/
0853nobodyさん2005/08/30(火) 01:32:38ID:???
ttp://la.ma.la/misc/js/roma.html を移植するのなら結構簡単だと思うなー。
0854nobodyさん2005/08/30(火) 01:58:25ID:???
>>851
だから、お前がスクリプト書いてみろって言ってるんだよ、カス
0855nobodyさん2005/08/30(火) 02:21:32ID:???
学校の課題が出来ずに焦っている>>854がいるスレはここですか?
0856nobodyさん2005/08/30(火) 02:41:40ID:???
>>854
糞面白いなお前wwwwwwこんなのも書けないなんて障害あんじゃねーの?wwwwww
0857nobodyさん2005/08/30(火) 02:46:17ID:???
853のソース見たんだけど、PHPに(「charCodeAt」みたいな)文字を文字コードに変換する(?)関数か方法ってあるの?
08588572005/08/30(火) 02:47:46ID:???
ごめん。勘違いしてた。忘れてくれ。
0859nobodyさん2005/08/30(火) 12:51:39ID:zspoZiNa
ム板に誰かスレ立てたな?

【祝】コマンドラインから始めるPHP【プロ板進出】
http://pc8.2ch.net/test/read.cgi/tech/1124990165/l50


これならまあええが、
下のは何だ。厨は単発質問糞スレ立てるな。

phpでデリミタしたら配列内に改行
http://pc8.2ch.net/test/read.cgi/tech/1124583843/l50
phpについて教えてください!
http://pc8.2ch.net/test/read.cgi/tech/1125139051/l50

PHPでExcelのテンプレートに値を入れたい
http://pc8.2ch.net/test/read.cgi/tech/1125207985/l50


0860nobodyさん2005/08/30(火) 13:52:59ID:???
PHPファイルにbase64でエンコードしたGDフォント(*.gdf)を埋め込んでみたいと
考えているのですが、ヘッダはどのように指定すればよろしいのでしょうか?
0861nobodyさん2005/08/30(火) 15:45:20ID:???
>>842
>853紹介のスクリプト(ttp://la.ma.la/misc/js/roma.html)を移植したぞ。
$roma["hiragana"]は ttp://la.ma.la/misc/js/roma.js を参考に2次元連想配列で作ってくれ。
 $roma["hiragana"] = array("a" => "あ","i" => "い",.......); な風にして。
また今は関数外に出してるけど必要なら関数内に入れてくれ。

function roma2hiragana($text){
return roma2x($text,"hiragana");
}

roma2x()は次↓
08628612005/08/30(火) 15:46:09ID:???
function roma2x($text,$to){
$skip = 0; $len = strlen($text);
global $roma; // $romaを関数内に入れるなら不要
for($i=0;$i<$len;$i++){
if ($skip > 0) { $skip--;
} else {
$temp = substr($text,$i,1);
if (ereg("[a-zA-Z.,-]",$temp)) { //[a-zA-Z.,-]
$loop = 4; $f=0;
while($loop){
$temp = substr($text,$i,$loop);
if (isset($roma[$to][$temp])){
$kana = $roma[$to][$temp];
if($loop == 2){
if($kana == "っ"){$i--;} //「っ」の場合、一文字戻す
$skip = 1;
}else{ $skip = $loop-1; }
$f=1;
$newarray[] = $kana;
break;
}
$loop--;
}
if(!$f){$newarray[] = $temp;} // $f == 0
} else {
$newarray[] = $temp;
}
}
}
return implode($newarray); // stringで返す
}
0863軟式PHP2005/08/30(火) 17:16:10ID:???
>>862
いい奴だな。
0864nobodyさん2005/08/30(火) 21:18:35ID:???
定数に値を入れる時にヒアドキュメントを使いたいです。

define( "TMP", <<<END );
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END;

こういう使い方って無しでしょうか?
ちなみに上記だと実行時にエラーになります。
0865nobodyさん2005/08/30(火) 21:30:21ID:???
>>864
define('TMP', <<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END);

echo TMP;
0866nobodyさん2005/08/30(火) 21:35:01ID:???
>>865
864じゃないけどエラーでるぞ。

>>864
これはダメ?

$var = <<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END;

define("TMP", $var);
08678642005/08/30(火) 21:47:10ID:???
>>866

今はその方法にしてます。

ただ、Perl使ってたときはできた書き方なので、
同じようにスマートにならないかなーと思った次第です。
08688662005/08/30(火) 22:05:48ID:???
>>867
これだと出来た。

define('TMP',
$var = <<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END
);

または、

define('TMP',
<<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END
);

でもPHPエディタだと両方とも色分けが変になるから微妙だったけど。
08698682005/08/30(火) 22:15:36ID:???
すまん。>865の方法も少し変えたら出来た。
ヒアドキュメントの終端マーク?(END)を単独で1行にすれば良さげ?

define('TMP',<<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END
);
0870nobodyさん2005/08/30(火) 22:21:58ID:???
変換後の変数=置き換え関数("aiueonn","あいうえおん",送信されてきたデータ)
0871nobodyさん2005/08/30(火) 22:26:38ID:???
$line=file($file);
$end=count($line)-1;
echo $line[$end]
最後の行をだす。
0872nobodyさん2005/08/30(火) 23:20:26ID:eL6jzClK
MySQLの段落ありのデータをechoで表示する場合、
段落が認識されず、表示されてしまいます。

良い解決方法はないでしょうか?
08738642005/08/30(火) 23:24:41ID:???
>>866

ありがとうございます。
その方法でいってみます。

(確かにPHPエディタで色変わらないのは気持ち悪いですね…)
0874nobodyさん2005/08/30(火) 23:25:22ID:???
>>872
nl2br
0875nobodyさん2005/08/30(火) 23:50:56ID:???
単純な質問でごめんなさい。
whileで“00”〜“20”までを繰り返すとやりたいのですが、

$hage = "00";
while ($hage != "20") {
$hage++;
}

$hageの変数を2桁に固定するにはどうすれば良いのでしょうか。
08768752005/08/31(水) 00:05:59ID:???
ほんと、単純でしたね…。解決しました。
$page = "00";
while ($page != "20") {
$page = sprintf("%02d", $page);
$page++;
}
0877nobodyさん2005/08/31(水) 00:08:42ID:???
>>876
あの、それなら最初から
$page = 0;
while ($page != 20) { ... }
の方が良いですよ。
0878nobodyさん2005/08/31(水) 00:15:28ID:???
$page = 0;
while ($page++ < 20) { ... }
0879nobodyさん2005/08/31(水) 00:19:29ID:???
>>878
それだと、1からになってしまう…
0880nobodyさん2005/08/31(水) 00:21:28ID:???
>>878
その場合は、$page= -1;
0881nobodyさん2005/08/31(水) 01:38:45ID:???
404のエラードキュメントをphpで作りたいと考えてます。
その時に、要求アドレスによって、表示を分岐させたいと考えてるのですが、
要求アドレスがどうしても取得できません。

これは無理なのでしょうか。
0882nobodyさん2005/08/31(水) 02:03:00ID:???
>>881
っ[セッション]
08838812005/08/31(水) 02:33:16ID:???
>>882
セッションを使った方法を考えてみましたが、分かりませんでした。
404を出すアドレスにアクセスした時点では、
何もアクションが起こせないので、セッションも登録できないと思うのですが、
具体的な方法を教えていただけないでしょうか。
■ このスレッドは過去ログ倉庫に格納されています