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

【PHP】質問スレッドpart16【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/04/07 01:06ID:HTcWOpWf
PHP全般の質問スレです。
上級者用や雑談スレを立てたくなった場合は後から適宜立ててください。

■本家
 http://www.php.net/

■日本 PHP ユーザ会
 http://www.php.gr.jp/

■PHP マニュアル
 http://www.php.net/manual/ja/

■PEAR マニュアル
 http://pear.php.net/manual/ja/

過去スレ, 関連スレ及び注意事項等は、 あふぉが居なけりゃ>>2-5
0412nobodyさん04/04/25 15:57ID:???
>>411
ああそうだった

しかしこいつ、なんで俺にレスしたんだ
就職活動って上でレスしてる奴が答えるのが筋だろうに
041338904/04/25 16:40ID:???
>>391
おくれましたけど、ありがとうございます。
できました。
0414nobodyさん04/04/25 17:00ID:???
・PHP板でPerlネタ
・質問内容は低レベル、ググらない
・春の就職ネタ
・SE/PGネタ

リア中ならともかく社会人になろうって年齢がこんな事で悩むかよ。フル装備で釣りだろ。
もうスルーしる。
0415nobodyさん04/04/25 20:57ID:???
質問です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
<?
//php
?>
//ここにhtmlのフッタがあるけど略
</body></html>

と、このようなファイルでphpを動かしているんですが(拡張子は.php)、
php内 (<? ?>内) でreturnを入れると、フッタ以降の部分がすっとばされてしまいます。

<?
//php
?>

の部分のみの残処理をすっ飛ばすのが目的なのですが…。
returnやexit、breakなど色々試してみても結果は同じでした。
どなかか間違ってる部分を指摘していただけないでしょうか。
0416nobodyさん04/04/25 21:38ID:???
if文を使う
関数にする
別ファイルにする
0417nobodyさん04/04/25 22:09ID:???
$pos = array_search ( $fruits , $f_list );

print $fruits . "<br>";
print_r ( $f_list );
print "<br>" . $pos;

と、こんなコードを書いたら

バナナ   //$fruitsの中身
Array ( [0] => りんご [1] => みかん [2] => バナナ [3] => メロン )   //$f_listの中身

と、こういう答えが返ってきたんだけど、なぜかarray_searchの結果 $pos だけが返ってきません。
ちゃんと配列の中にバナナ入ってるのに。

なんで?どこがおかしいんでしょうか?
0418nobodyさん04/04/25 22:16ID:???
>415
returnはそのファイルの処理をそこで中断して呼び出し元に戻る

hoge.php
<?php
echo "ho";
return;
echo "ge";
?>

fuga.php
<?php
include("hoge.php");
?>
0419nobodyさん04/04/25 22:23ID:???
>>416
ありがとうございます。
フッタ以下を関数にすることにして、returnとセットで呼び出すことにしました。
0420nobodyさん04/04/25 22:25ID:???
>>418
あ、別ファイルってそういうことですか。
確かにそういった方法もありますね。
ありがとうございました。
042141704/04/26 00:21ID:???
自己解決。
配列の各項目に改行が入ってただけでした。
あしからず。
0422nobodyさん04/04/26 13:36ID:???
http://f13.aaacafe.ne.jp/perlvsphp/
0423nobodyさん04/04/26 20:30ID:v21IQMwx
viを使って慣れてきたときの事を思い出しつつ…

viでカーソルを動かすとき、HJKLでは動けるが、カーソルキーでは動けない。
そんな束縛感にひたり、ニヤリとしてしまう。
長井秀和です。

viの話。
viに慣れてきた奴は、Windowsのメモ帳でも間違えたときEsc連打しちゃう。間違いない。

viに慣れてきた奴は、秀丸のあのボタンの絵のセンスはどうにかならないものかと思っている。
間違いない。

Excelで入力をミスったときにEscを押すんじゃない、入力した内容が消えてしまうぞ、気をつけろー!!

viに慣れてきた奴は、アレを使うときCtrl-c、Ctrl-sしか知らなかったりする。間違いない。

viに慣れてきた奴は、矩形選択にちょっとあこがれている。間違いない。
0424nobodyさん04/04/26 21:00ID:???
秀丸でも矩形選択はで切るんだよな。
で、vi(vim)の折りたたみ機能がほすい。
スレ違いスマソ
0425nobodyさん04/04/26 21:43ID:???
>>424
いいよいいよ過疎地ですから盛り上がればそれでよし。
それにしても矩形選択なんて使ったこと無いよ(´・ω・`)ショボーン
0426nobodyさん04/04/27 00:16ID:???
>>423
長井秀和が、一回のコントで「間違いない」と言うのは、
精々3〜5回程度である。間違いない。
0427nobodyさん04/04/27 11:47ID:???
PHPで、文字列の中にある < を <に変えるには、どうすればいいですか?
0428nobodyさん04/04/27 11:48ID:???
間違えた・・・もう一度入力します、すいません
PHPで、文字列の中にある < を &lt;に変えるには、どうすればいいですか?
教えてください、お願いします
0429nobodyさん04/04/27 11:53ID:???
>>428
htmlspecialcharsみたいな事をしたいの?
043042804/04/27 11:54ID:840uECrU
>>429

まぁ、< を&lt;に変えればかまいません
0431nobodyさん04/04/27 12:02ID:???
>>428
str_replace()
0432nobodyさん04/04/27 12:08ID:U23hB6pM
preg_replace()
043342804/04/27 12:11ID:???
>>429,431,432
どれが一番いいの?
0434nobodyさん04/04/27 12:20ID:???
好きなのにすれば?
PHPマニュアルみながら覚えろ
0435nobodyさん04/04/27 12:41ID:???
どれが一番いいかなんて、状況によるだろうから全部試せばいい。
for ($i=0,$str2='' ; $i<strlen($str); $i++) {
$a=$str{$i}; $str2+=($a=='<')?'&lt;':$a; }
とか書いてもいいし
0436nobodyさん04/04/27 13:00ID:???
日本語入りの文字列でstr_replaceやるとヤバイ?
0437nobodyさん04/04/27 13:02ID:???
>>436
EUCやUTFなら無問題
0438nobodyさん04/04/27 18:15ID:???
>>436
基本的にmb_関数名
で、マルチバイト処理ができますよ
mb_str_replace
0439nobodyさん04/04/27 18:18ID:???
htmlspecialcharsでいいとおもうんだがな。
0440nobodyさん04/04/27 18:27ID:???
escape_echo($str);


function escape_echo($str)
{
  echo htmlspecialchars($str);
}
0441nobodyさん04/04/27 18:30ID:???
俺ならこうするね

my_echo($str);


function my_echo($str)
{
  echo htmlspecialchars($str);
}
0442nobodyさん04/04/27 19:06ID:0/nuV2X8
質問です。

偶に"http//hoge/?top"みたいなアドレスのものがありますが、
これの取得または有無を簡単にできる手段はありませんか?

予測される物全部をis_nullで調べていたんですが
もっとスマートにできればなと思いまして・・・
0443nobodyさん04/04/27 19:07ID:0/nuV2X8
修正です

>偶に"http//hoge/?top"みたいなアドレスのものがありますが、
>これ"?top"の部分の取得または有無を簡単にできる手段はありませんか?
0444nobodyさん04/04/27 19:23ID:???
何を訊きたいのかよくわからんが$_GET/$HTTP_GET_VARS
0445nobodyさん04/04/27 19:24ID:???
>>443
if (!isset($_GET['top'])) echo '何かパラメタ渡せ(゚Д゚ )ゴルァ!!';
は?
0446nobodyさん04/04/27 19:53ID:???
え

isset($_SERVER['QUERY_STRING'])
だろ・・・
0447nobodyさん04/04/27 20:31ID:???
sprintfなんかで文字列中に%を含みたい時はどうしたらいいでしょうか
$str = sprintf("%d%", 100); //"100%"を期待
%のエスケープってできましたっけ?
0448nobodyさん04/04/27 20:43ID:???
>446
あ 有り難うございます。

>444-445
説明が悪くてすいませんでした。
0449nobodyさん04/04/27 20:44ID:???
>447
$str = sprintf("%d%%", 100);
だと思います。
045044704/04/27 20:52ID:???
>>449
ありがとうございます。型指定子に%でパーセント文字になるんですね
0451nobodyさん04/04/27 21:36ID:+FvBbqtX
あるテーブル内に、Perl-cgiで書かれた出力結果を出すにはどうすればいいでしょうか?
例えば test.phpなら
<table><tr><td>
<?php include "test.php";?>
</td></tr></table>
でテーブル内にtest.phpの出力ができるようですが、
Perl-cgiですと、どうすればできるでしょうか?

<?php include "test.cgi";?>
や
<?php header("Locatin:http//・・・/test.cgi");?>
では、駄目でした。
0452nobodyさん04/04/27 21:39ID:???
exec
0453nobodyさん04/04/27 21:39ID:???
<?php system("perl test.cgi"); ?>
0454nobodyさん04/04/27 21:52ID:hpcGtt+e
激しく厨な質問で申し訳ないんだが、URLで渡した変数(&mode=allみたいなの)は、
どうやって拾えばいいの?$_GETをどうせぇと?
0455nobodyさん04/04/27 21:56ID:???
>>454
http://ahya.org/aiueo/?a=1mode=all&exec=true

echo $_SERVER['QUERY_STRING']; //a=1mode=all&exec=true
echo $_REQUEST['a']; //1
echo $_REQUEST['mode']; //all
echo $_REQUEST['exec']; //true

$_REQUESTはGET,POSTどちらのメソッドの場合でもおk
$_GETはGETの時のみね
$_POSTはPOST〃
0456nobodyさん04/04/27 22:04ID:???
>455
折角URLまで書いていただいてありがたいのですが404ですた…。
正直説明するのも骨が折れると思われるので、誘導して頂けません?
0457nobodyさん04/04/27 22:04ID:???
>>455
echo $_REQUEST['a']; //1mode=all
と、揚げ足とってみるテスト
0458nobodyさん04/04/27 22:04ID:+FvBbqtX
>>453
 出力が出ないです。空白のままのようです。
 ちなみに、includeではtest.cgiのテキストが表示されました。
0459nobodyさん04/04/27 22:06ID:???
>>456
もまえは、>>455にあるURLをそのまま踏んだのか?
0460nobodyさん04/04/27 22:06ID:???
>>456
いや・・・
”例え”だよ
しかもphp省略しちゃって分かりにくかったかな

http://ahya.org/aiueo/test.php?a=1&mode=all&exec=true

test.php
<?php
echo $_SERVER['QUERY_STRING']; //a=1mode=all&exec=true
echo $_REQUEST['a']; //1
echo $_REQUEST['mode']; //all
echo $_REQUEST['exec']; //true

?>

>>457
&忘れてた、、スマソ
0461nobodyさん04/04/27 22:09ID:???
>>458
echo system("/usr/bin/perl test.cgi");
0462nobodyさん04/04/27 22:18ID:+FvBbqtX
<?php echo system("/usr/bin/perl test.cgi");?>
<?php system("/usr/bin/perl test.cgi");?>

なにもでないです。。゜゜(>ヘ<)゜ ゜。ビエェーン
0463nobodyさん04/04/27 22:21ID:+FvBbqtX
<?php header("Locatin:http//・・・/test.cgi");?>
では、新しいウィンドウ開いちゃいます。。。
0464nobodyさん04/04/27 22:22ID:???
>>462
そもそもperlのパスは/usr/bin/perlであってるの?
046546204/04/27 22:23ID:+FvBbqtX
http//・・・/test.cgi では動きます
0466nobodyさん04/04/27 22:24ID:???
>>462
あ、別にechoはいらんのか。
で、perlのパスは/usr/bin/perlでいいのか?
046746204/04/27 22:28ID:+FvBbqtX
/usr/bin/perlです。涙。
test.cgiにも書かれてます
0468nobodyさん04/04/27 22:29ID:???
test.cgiは呼び出し元のPHPと同じディレクトリ?
0469nobodyさん04/04/27 22:30ID:???
>>467
passthru("/usr/bin/perl test.cgi");
ならどぉよ。
0470nobodyさん04/04/27 23:42ID:???
safe-modeでシステム関数ってエラーも何も出ないんじゃなかったっけ?
0471nobodyさん04/04/28 00:50ID:???
>>456
とりあえずこの辺読んどけ
ttp://jp.php.net/manual/ja/tutorial.forms.php
047246704/04/28 04:29ID:GhugZwA8
出来ました。
私の環境ではシステム関数は使えないようでした。
あきらめ掛けたのですが、やれました。
参考にしてください。

table 内で直接perl-cgiを呼ぶのではなく
一度、phpファイルをかませたら出来ました!

<table><tr><td>
<?php include "test.php";?>
</td></tr></table>

test.phpは
<?
require("http://・・・・・/test.cgi";?>
047346704/04/28 04:30ID:GhugZwA8
出来ました。
私の環境ではシステム関数は使えないようでした。
あきらめ掛けたのですが、やれました。
参考にしてください。

table 内で直接perl-cgiを呼ぶのではなく
一度、phpファイルをかませたら出来ました!

<table><tr><td>
<?php include "test.php";?>
</td></tr></table>

test.phpは
<?
require("http://・・・・・/test.cgi");
?>
0474nobodyさん04/04/28 14:09ID:???
16進を10進に変換するにはどうしたらいいですか?
0475nobodyさん04/04/28 14:15ID:???
>474
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=php+16%E9%80%B2+10%E9%80%B2+%E5%A4%89%E6%8F%9B&lr=
0476nobodyさん04/04/28 17:12ID:???
>>475
中途半端に教えるのやめれ。
>>474
http://jp.php.net/manual/ja/function.hexdec.php
hexdec関数。
0477nobodyさん04/04/28 18:05ID:???
>>476
そうやって甘やかすのもどうかと思うんだが
技術屋ならテメエで調べる癖付けろっての
0478nobodyさん04/04/28 21:42ID:???
ヒアドキュメント内で連想配列って使えないの?
0479nobodyさん04/04/28 23:14ID:???
これで OK.

echo <<END_OF_RES
{$ahya['goruxa']}
{$nullpo->gaxtu}
END_OF_RES
0480nobodyさん04/04/29 00:41ID:???
>>479
サンクス!!
0481nobodyさん04/04/29 13:22ID:???
みんなヒアドキュメントの
print<<<HOGE←ここってどうしてる?
俺はEODにしてるがEOM,EOCとかもあるし。EOFはなんか違う気がするが。
0482nobodyさん04/04/29 13:36ID:???
>>481
別になんでもいいんじゃない?
HEADERでもFOTTERでも好きなもの使えば。
0483nobodyさん04/04/29 13:39ID:???
END_OF_HTML
で統一してマス。EOH とかだけだとなんか短すぎて不安。
0484nobodyさん04/04/29 13:39ID:???
EOD = End of Document?これがいちばん理にかなってるな。
0485nobodyさん04/04/29 14:06ID:???
>481
俺は、echo<<<HTML
HTMLくらしかヒアドキュメントに書かねーし。

つうか、EclipseM6(まだM8にしてない)が、
<<<Hまで打ったとこで激しく重くなって死にはしないんだけど、
エラー吐いて、HTML打ち終わるまで激重になるのが鬱。

M8で改善されてるのかな・・・
0486nobodyさん04/04/29 14:07ID:???
echo <<<OTL
0487nobodyさん04/04/29 14:13ID:???
ちょっと目立つように __EOD__ だったかな。
smarty等テンプレート使うようになってヒヤドキュメントは
全然使わなくなったけど。

>>486
ワロタ エラー時の出力部分にはいいかもしんない。
0488nobodyさん04/04/29 14:14ID:???
echo <<<orz
0489nobodyさん04/04/29 14:25ID:nRyNoo3z
質問です。
「ice001」とか「straight002」と言う文字の数字の部分を
取り除いて「ice」「straight」としたいのですがどのようにすれば
よいのでしょうか?
0490nobodyさん04/04/29 14:42ID:???
>489
001とか002が3桁固定なのであれば、
$string_and_number = "ice001";
$string_only = substr($str, 0, -3);
0491nobodyさん04/04/29 14:50ID:???
>>488
大文字にしないと見分けづらいorz
0492nobodyさん04/04/29 14:52ID:???
preg_replace("/\d/","","straight002");
0493nobodyさん04/04/29 15:53ID:???
>>490
>>492
サンクス。できました。
0494nobodyさん04/04/29 16:42ID:???
ローカル環境へのインストールに関する質問はここでいいですか?

使用OS WinXP
Apache 1.3.29
PHP 4.3.6

httpd.confに
LoadModule php4_module C:/php/sapi/php4apache2.dll
これを書いてもApache起動時に

cannot load C:/php/sapi/php4apache2.dll into server:(126)指定したモジュールがみつかりません

上記のように出てきて、apacheが起動できません。
「C:/php/sapi/php4apache2.dll」自体は、ブラウザにコピペして存在を確認しています。

もちろん、LoadModuleをコメントアウトするとApacheは動きますが、
PHPを動かすことはできません。

どうすればよろしいでしょうか…
0495nobodyさん04/04/29 16:46ID:???
なんでApache 1.3.29なのにphp4apache2.dllなんだよ。
あとApache1だとAddModuleも必要じゃなかったっけ?
0496nobodyさん04/04/29 16:56ID:???
マニュアルをよく読んでないからこういうつまらんミスするんだな
0497nobodyさん04/04/29 17:23ID:???
>>495-496
すみません、Apache1じゃなくて2を入れなおして設定しなおしたらうまくいきました。

ありがとうございます。


クソ質問してごめんなさい、100回くらい吊ってきます…
0498nobodyさん04/04/29 19:24ID:???
>>497
一回吊れば十分だけど、確実にな
0499nobodyさん04/04/29 21:37ID:???
echo <<<BAKAHA_IRANEw
0500nobodyさん04/04/29 21:56ID:???
単純な質問で失礼します。
文字列検索に使える関数と言えば
strposとかstrstrとか色々ありますよね。

で、ある文字列の中に任意の文字列が含まれているかどうか、ということだけを調べるのが目的の場合、
一番速い関数って何なんでしょうか?
0501nobodyさん04/04/29 21:58ID:???
>>500
そんなのは自分でベンチマーク取りなさいな
0502nobodyさん04/04/29 22:01ID:???
>>500
先ずはどこまで(どのパターンについては)試したの?>速度
050350004/04/29 22:09ID:???
いや、試してません。
っていうか、マニュアルで、文字列が含まれてるか否か、という関数を探してたらみつからなかったんで、
どこにあるんだろう、と。

最初に見つかった位置を返す、とかばっかりで、そんな丁寧なことしてくれちゃってる間に、
速度が落ちてるんじゃないかと心配で。

もしかして、文字列が含まれてるか否か、だけを調べる関数ってないんでしょうか?
もしないんだったら、こういう場合は普通みなさんはどの関数を使ってらっしゃるんでしょうか。

一般的なお答えで結構です。
ちゃんと説明するとちょっと質問の方向がズレちゃってすみません。
0504nobodyさん04/04/29 22:13ID:???
>>500
被ったついでに
http://www.php.net/manual/ja/function.microtime.php
スクリプト中は何回か回して、またスクリプトも何度か動かして
平均とらなきゃ駄目だよ。
0505nobodyさん04/04/29 22:17ID:???
初心者ですが該当スレがないようなのでここで質問させてください。
explodeで区切り文字に指定したい文字が二つ以上だったらどうすればいいんでしょうか。

explodeで出来た配列の一つ一つに再びexplodeをかけていって、
できあがった全ての配列を一つの配列に代入する、といった手順を踏めばできそうですが、
もっと簡単な方法があれば…。
よろしくおねがいします。
0506nobodyさん04/04/29 22:17ID:???
テキストファイルを丸ごと読み込む際にfopen()して一行ずつfgetsで取得していくのと
一気にfile()で読み込むのとではどっちが負荷・信頼性の面で良いのでしょうか?
0507nobodyさん04/04/29 22:19ID:???
>>503
文字列を探す時にアルゴリズムの"副産物"で
見つかった位置が得られるんだよ。<strpos
まあ普通でも使うから値も返してるのだけど。
0508nobodyさん04/04/29 22:21ID:???
>506
一般的に後者。
マニュアルくらい読め
0509nobodyさん04/04/29 22:22ID:???
>>505
split/spliti
0510nobodyさん04/04/29 22:27ID:???
>>505
print_r(split('[_-]', "abc_de-f-g_hijk-l"));
051150004/04/29 22:30ID:???
>>507
ああ、副産物ですか、そういわれるとなんかちょっと安心です。
strpos使ってみます。
■ このスレッドは過去ログ倉庫に格納されています