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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/10/05 17:36:38ID:???
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。


■本家
 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-4
0724nobodyさん04/10/23 22:42:25ID:???
>>723
見当違いの心配せんでよろしい
0725nobodyさん04/10/23 23:39:16ID:???
SimpleXMLについて質問です。

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="test.xsl" type="text/xsl" ?>
<doc>
<head>テスト太郎</head>
<par>こんにちは、テスト太郎です。</par>
</doc>

という内容のXMLファイルを$xmlに読み込み、そのデータを echo $xml->asXML();で画面表示したのですが、
test.xslが反映されていません。XMLファイルを直接ブラウザで表示すると、反映されているのですが……。
どうしたらいいのでしょう、教えてください。
0726nobodyさん04/10/23 23:39:34ID:???
timeは2038年で破綻します。
0727nobodyさん04/10/23 23:40:45ID:???
それが?
0728nobodyさん04/10/23 23:42:56ID:???
さぁ?自分で考えれば?w
0729nobodyさん04/10/24 00:14:07ID:???
phpだと桁があふれたときに自動で64bit型になるのかな?
0730nobodyさん04/10/24 00:20:31ID:???
>725
simpleXMLって、xslとかxsdとかに対応してなかった希ガス。
どっかで読んだと思うんだが、今見たら本家のSimpleXMLリファレンスには
書いてなかったし……(記憶違いだったらすまぬ)
0731 ◆hEpdoZ.tHU 04/10/24 04:22:39ID:???
2chと互換のあるトリップが欲しくて下のスクリプトまでたどり着いたのですが
"<"と">"の記号が2chと同じように変換されません。原因が分かる人教えて。。
環境:php4.3.8

$key = "<>";
$key = JcodeConvert($key, 1, 2); //EUC-JPの$keyをShift-JISに変換・・
$salt = substr($key."H.", 1, 2);
$salt = strtr($salt,":;<=>?@[\\]^_`","ABCDEFGabcdef");
$salt = ereg_replace("[^\.-z]", ".", $salt);
echo $trip = "◆".substr(crypt($key, $salt),-10);
0732nobodyさん04/10/24 04:31:22ID:???
mb_ereg_replace(">","<",$salt)
0733nobodyさん04/10/24 09:10:59ID:???
>>725
サーバ側の PHP スクリプトと同じディレクトリに test.xsl があって、
ブラウザ側で PHP スクリプトが出力する XML に test.xsl を適用させたい
ということでいいのかな?

もし、そうだとしたら、デフォルトで PHP は

Content-type: text/html

を出力するので、単なる HTML ファイルとしてブラウザが認識しているはず。
PHP で XML 用のヘッダを出力すればブラウザが test.xsl を取得して
適用してくれると思う。

header('Content-type: application/xml');

一応、Mozilla Firefox では確認した。IE では試してないけど。
073473004/10/24 09:40:30ID:???
>733
あ、なるほど。THX
元質問者でないが、次そういう話がありそうなので助かった。御礼
073572504/10/24 13:20:53ID:???
>>733
あ、なるほど、そうだったんですか!
HTML用のヘッダを出力していることは知りませんでした。どうもありがとうございます。
0736nobodyさん04/10/24 13:28:57ID:???
>>735
Operaだと、xsltは無視される。
IEは追加のコンポーネントを入れないと、まともに表示されないのもある。
IEとMozillaで、xsltの解釈が違って、表示が異なる事がある。
073772504/10/24 14:17:43ID:???
>>736
もちろん、(XMLを使うわけですから)そのくらいのことは存じております。
ですから、サーバサイドでXSLTを適用するか、それともブラウザの変換に委ねるかどうか、閲覧者に選択
させるようにするつもりです。
まあ、わざわざありがとうございます。
0738nobodyさん04/10/24 14:43:24ID:???
ディレクトリ内のファイルのうち特定の拡張子のもの(とりあえずzipとlzhを想定)だけを
表示させるスクリプトを作りたいのですが、
同一ディレクトリ内ファイル名を配列$f_nameに格納後
zipとlzhのものを配列$itemに格納して一致するものを抜き出そうと
下記のように書きましたがうまくいきません。$new_f_nameが空になります。
よろしければどなたかおかしいところを教えていただけないでしょうか。

(ディレクトリ内のファイル名を$f_nameに格納するところまで省略)
$item = array("zip$","lzh$");
$new_f_name = array();
foreach($f_name as $value);{
if (in_array($value, $item)){
$new_f_name[] = $value;
}
}
$f_name = $new_f_name;
0739nobodyさん04/10/24 15:53:21ID:???
dbからの検索結果を表示するときに、
キーワードをgoogleのように色違いにしています。

str_replace('検索ワード', '<B><FONT COLOR="#FF0000">検索ワード</FONT></B>', $対象文字列);
と言う感じです。

これを改造して、半角空白でAND検索を出来るようにしたんですが
例えば「たま まご」で検索した場合、結果表示がうまくいきません。

元の文章が「生たまご全滅」だった場合に
本来なら「生<B><FONT COLOR="#FF0000">たまご</FONT></B>全滅」となって欲しいのですが
実際は「生<B><FONT COLOR="#FF0000">たま</FONT></B>ご全滅」となってしまいます。

途中で置換しているために「まご」が消えてしまい、置換されないためなのですが、
これをうまく回避または処理する方法はありますでしょうか。
何かアイデアなどありましたら、ご教授お願いしますm(_ _)m
0740nobodyさん04/10/24 17:11:25ID:???
>>739
それさ、実装したとして、
「結構 構文」 で検索したときに
「結構文章がうまい」 が 「<b>結構文</b>章がうまい」 になっちゃうだろ。

Google で 「たま まご」 で検索しても 「たまご」 にはハイライトされてないし。
っていうか 「たまご」 で検索したいなら最初から 「たまご」 で検索するんじゃ。
0741nobodyさん04/10/24 17:26:42ID:l6rOaDlU
htmlとcssに関しては、普通に解ってて(自分のやりたい範囲の事は)
最近、php&mysqlに手を出した、インチキweb屋です。
スクリプトなんかは、ありものを改造してなんとかする程度のレベルです。
よくある、登録したデータから条件を設定して検索したり、
データを登録するためのインターフェイスを作ろうと試行錯誤してます。
ローカル、及びリモート(レンタル鯖)でphpとmysqlは既に稼働してます。
データベース板で質問したのですが、web prog板で聞いた方がいいよ、と
言われこちらにおじゃましました。さて、いくつか質問させて下さい。
環境はPHP4.3.1、MySQL 3.23.58です。(本番用のレンタル鯖)

質問1 検索結果で、タイトルにあたるものをずらっとリストアップして
そこから、詳細画面(getでid を渡して表示)を出すというのをやってみました。
そのさい、詳細画面を表示するときにこっそり、count(例)というフィールドの
値を増やしてそのレコードに書き込む。すなわち、レコードごとにアクセスカウンタを
付けた(重複対策悩んですますが)ような事をしてみたのですが、やり方的に、変ですか?
普通のカウンタみたいに、レコードごとにカウント用のファイルを用意してするべきでしょうか?

質問2 ひとまず、検索、一覧、修正、登録、削除等の機能をmodeという変数で判別して
一つのphpのなかでcase文で振り分けてやりくりしちゃってるのですが
こういうやり方はかなり変でしょうか?(もちろん公開するときは修正、登録、削除は別ファイルにしますが)

質問3 本番で使うレンタル鯖は、phpのcgi版しか使えません。これだとHTTP 認証出来ないのですが
このような場合、修正、登録、削除などの管理画面をどのようにプロテクトすればよいでしょうか?
いざとなったら、編集作業のときだけ、スクリプトをアップして作業が終わったら消すとかw

質問項目が多くなってしまいました。「質問1 それ、変」とかそんな感じでいいので
アドバイスというか解答をいただけたらと思います。
0742nobodyさん04/10/24 17:38:12ID:???
>>741
思いつくまま適当に書いてみる

答え1
いいんじゃないですか。同時アクセスの問題とか解決できてるなら。
まあ、web屋さんだからその辺は心得てるだろうけど。

答え2
一つの関数に複数の異なる機能を持たせるのはあまりよくない。
一機能一関数位の感じで組むと見やすいと思うけど、その辺は個人の感覚次第。

答え3
DB使えるなら、認証はDBを使って作ってしまうってのはどうだろう?
それか、.htaccessを使えるならそっちで。
0743nobodyさん04/10/24 17:44:26ID:???
>>741
そういう質問している段階からピンで仕事を獲ろうという神経はどうかしてるよ。
悪いことはいわないから、とりあえず下請けから初めてプロジェクト管理なども
含めて勉強してください。
0744nobodyさん04/10/24 17:44:34ID:???
>>741

>質問1
>質問2
「変」ではない。
一般的かどうかなんて、そんなに重要なことじゃないだろ?
仕事でチーム組んで開発するのならいざ知らず、
個人的にやっているものなら、やりたいようにやればいい。

>質問3
自分で認証実装すればいいんでは?
いくらでもやりようはある。
ま、俺ならモジュールで動く環境使うけどな。
0745nobodyさん04/10/24 17:49:25ID:???
相変わらず回答者のレベル低いですね
074673804/10/24 17:51:32ID:???
放置されてて悲しかったのでどうにか自己解決しました。お目汚し失礼しました。
074773904/10/24 18:07:30ID:???
>>740
回答どもです。

>それさ、実装したとして、
>「結構 構文」 で検索したときに
>「結構文章がうまい」 が 「<b>結構文</b>章がうまい」 になっちゃうだろ。

まさにそういうことです。
検索者が意図してるしてないに関わらず、
単に結果を正確に表示したいという事です…
googleってのはイメージしやすい一例で出しただけで、
仕様としては「入力した文字を厳密にハイライトする」って形にしたいと思ってます。

「しんぶんし ぶん」のような形も
「たま まご」のような形にも対処できる、スマートな方法のアイデア、
何かありませんでしょうか…
0748nobodyさん04/10/24 18:12:36ID:???
>>747
検索側がわざわざ「たま まご」や「しんぶんし ぶん」で検索してるんだったら、
「たまご」や「しんぶんし」と混同されるとマズイってことだろう。
せいぜい表記ゆれを見て修正候補だすぐらいじゃない?
0749nobodyさん04/10/24 18:17:46ID:???
>>747
2パスでやれば?
0750nobodyさん04/10/24 18:17:57ID:???
>>746
ごめん、よく読んでなかったよ。

漏れだったらglob()使うね。
075174104/10/24 18:53:32ID:???
丁寧な解答有り難うございます。

>>742
1. いや、同時アクセスの場合のこととかそこまで深くは考えてません。
やっぱりカウンタ値を、単なるページの読み込みで書き換えるってのはヤバい気がしてきました。
2. この辺は、まだプログラムの構成も練れてないのでじっくり考えてみることにします。
3. 別テーブルにid とパスを入れてそこに問い合わせてあってたらそれ以後のスクリプトを実行という感じですかね?

>>743
漏れのスキルが至らないのは自分でも解りきっています。
これでも何も解らないところからひと月でなんとかここまで来た訳でして
むしろ、仕事を獲ろう、としたというより、仕事が来てしまった、と
いう形なのです。とにかくやるしかない状況なのです。

>>744
なるほど。自分の場合、他のひとは一切関わりませんし
すべて自分で作って自分で対処するので、自分のやりたいようにやるのが
いいのかもしれません。
幸い、漏れて困るような情報はあつかっておりませんので、勉強だと思って
思ったように作って少しずつ、知識に応じて改造していくのでもよいですね。

0752初心子04/10/24 19:16:06ID:lx5zDplK
質問です。

例えばあるサーバAで稼動しているアップローダ(PHP)にアップロードされた
ファイルを、そのままFTPサーバの稼動しているサーバBにアップロードする、
ということは可能でしょうか?可能であるとしたら、どのようにすれば
そういうことが出来るのでしょうか?
075373904/10/24 19:29:39ID:???
>>748
うーん。。なんというか、シンプルで厳密なものにしたいのです。。

>>749
すみません、2パスでやるとはどういうことでしょうか?
0754nobodyさん04/10/24 19:38:44ID:???
>>753
うーんとね、まず、どの文字を置換しなきゃならないかを全ての条件でサーチして、
結果をどっかに格納しておく。

で、おわったら、その結果を元に置換する。一文字単位で色変えれば簡単にできるでしょ。
冗長だけど。
0755カポ子04/10/24 20:02:31ID:???
うpファイルがバイナリ時で
拡張子チェックやリモートファイルの名前付け、
パッシブモード設定時等の処理は自分でやってくれの場合↓
<form enctype="multipart/form-data" action="_URL_" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>

<?php
$filename = $_FILE['userfile']['tmp_name'];
$filesize = (int)$_FILE['userfile']['size'];
$fp = @fopen($filename,"r");
flock($fp,LOCK_SH);
@fseek($fp,SEEK_SET,0);
$upload = @fread($fp,$filesize);
flock($fp,LOCK_UN);
fclose($fp);
$cnt = ftp_connect($host,21,100);
$rslt = ftp_login($cnt,$user,$pass);
if(!$cnt):
echo 'I cannot look up the FTP SERVER.';
exit();
elseif(!$rslt):
echo 'I cannot look up the FTP USER.';
exit();
else:
if(@ftp_put($cnt, $remotefile, $upload, FTP_BINARY))
echo "OK!";endif;ftp_quit($cnt);
0756初心子04/10/24 20:48:25ID:???
>>755
こんなに早くサンプルまで頂けると思っていませんでした。
大変助かりました。ありがとうございます!
0757にーchan04/10/24 21:23:00ID:???
PHPプログラムでフォルダを作ることは可能なのでしょうか?
知っている方いたら教えてください。
0758nobodyさん04/10/24 22:10:23ID:???
えむけーでぃあいあーる
0759nobodyさん04/10/24 22:51:25ID:???
メイクディレクトリ?
0760nobodyさん04/10/24 22:51:28ID:???
>>758
実はディレクトリのことじゃなかったりして・・・?
0761nobodyさん04/10/25 03:49:18ID:???
PHPでfsockopen()使ってソケット接続する際のタイムアウトはsocket_set_timeout()で指定しますが、
それでは実際にタイムアウト処理を含んだソースを書くとすればどんな風に書きます?

そもそも、socket_set_timeout()で指定した秒数を超えるとどういう動作をしているのでしょう?
自分は今まで何も考えず、socket_set_timeout()さえ指定しておけば、勝手にソケット接続を閉じて
くれるとばかり思っていたのですが、どうもそれが上手くいっていないのではないか?(予想)という
ケースに遭遇しました。

色々と調べていると↓のようなソースを発見しました。
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/pukiwikimod/pukiwiki/proxy.php
これを見るとsocket_get_status()でチェックをかけてますが、必要な処理なのでしょうか?
ご意見求む。
0762nobodyさん04/10/25 09:28:58ID:???
>>751
質問1について
詳細のデータは対象物が変わならい限り更新の必要がないものでしょ?
その同じレコードにアクセスされるたびに更新されるカウンタを同居
させるべきじゃないよ。
具体的には詳細ID+カウント値という構成の別テーブルを作るべし。

詳細という事実とそれを参照されたという別の事実を混同しないほうがいいし、
更新頻度の異るデータを同じ場所に詰めこまないほうがいい。

質問2、3について
参照、修正、登録、削除それぞれ別ファイルにしておけばBASIC認証で済む。
0763nobodyさん04/10/25 11:26:06ID:pw7w/xoj
フリーのグラフ表示スクリプトってないですか?
自分の製品を売っても、無料で使えて、出来ればソースの改造もしちゃって良いというの。
0764nobodyさん04/10/25 11:31:40ID:XEONTDY3
>>763
jpGraphとか?
0765nobodyさん04/10/25 11:41:28ID:pw7w/xoj
>>764
レスありがとうございます。
jpgraphって商用版を買う必要がありませんか?
0766軟式PHP04/10/25 12:05:26ID:???
ちったぁ調べろハゲが。
0767カポコン04/10/25 13:14:27ID:???
ちったぁ調べろ禿が。
0768にーchan04/10/25 13:16:27ID:???
>>759
メイクディレクトリです。
解答ありがとうございました。
0769nobodyさん04/10/25 13:27:18ID:R1CVi9Qf
urlのパラメタを引数として取得したいんですが、
$_SERVER['QUERY_STRING'];
って、数字しか認めてくれないのですか?
http://~~.php?0432 と http://~~.php?A432 を
echo "<{$_SERVER['QUERY_STRING']}>";
と表示させたら前者しか表示されませんでした。後者は真っ白。


数字だけじゃ困るときはどーすれば良いですか?
0770nobodyさん04/10/25 13:28:59ID:Dv6fMtrA
変数の名前を、変数で変化させることは出来ないのでしょうか?
0771 04/10/25 13:29:57ID:???
出来るよ
077277004/10/25 13:35:29ID:Dv6fMtrA
>>771
$abc_data = 'hoge';
$def_data = 'piyo';

$name = array('abc','def');
for($i=0;$i<count($name);$i++){
print ${$name[$i]}_data;
}

で、エラーが出ました。どこがいけないのでしょうか?
0773nobodyさん04/10/25 13:48:37ID:???
print ${$name[$i]}_data;
077477004/10/25 13:48:39ID:???
$abc_data = 'hoge';
$def_data = 'piyo';
$hensuu_name = '_data';
$name = array('abc','def');
for($i=0;$i<count($name);$i++){
print ${$name[$i] . $hensuu_name};
}
で出来ましたです。
0775nobodyさん04/10/25 14:04:56ID:???
>>769
んなわけない。<? phpinfo(); ?> が書かれているPHPに phpinfo.php?QUERY... でアクセスしてみろよ。
ちゃんと出てるだろ?
0776nobodyさん04/10/25 18:21:09ID:???
はじめまして、今HPを作っていてアンケートを作成していて
以下のようなものを作ってみました。
内容はTELや郵便番号・住所の番地部分などの数字とハイフンを
綺麗にそろえようとしたものですが、もっと短く綺麗なプログラム?にしたいのです。
どの部分をもっといじれば短く綺麗な物になるのでしょうか?
俺ならこう書くなどのコツを伝授してください
また付け足したほうがいい機能とかもあったら教えてもらえませんか?
*$inputとprint部は後で消したりフォームからの入力に対応させます。

$input = "999− 9  9 9―99 9 9";
$before = array("−","ー","ー","−","―"," "," ");
$after = array("-","");

$input=mb_convert_kana($input,"a","EUC-JP");

for($i=0; $i<count($before); $i++){
if($i<count($before)-2){
$input = str_replace ($before[$i], $after[0], $input);
}
else
$input = str_replace ($before[$i], $after[1], $input);
}
print($input);
0777nobodyさん04/10/25 18:53:56ID:???
>>776
こんな感じかなぁ

$input = "999− 9  9 9―99 9 9−8ー8ー8−8―8";

$bar = array("−","ー","ー","−","―");
$bars = implode("|",$bar);

$input = mb_convert_kana($input,"a","EUC-JP");
$input = preg_replace("/$bars/","-",$input);
$input = preg_replace("/[^\d-]/","",$input);

echo "$input\n";
0778nobodyさん04/10/25 20:02:36ID:???
>>777さん
IFもFORもなしに出来るんですね!
教科書レベルの私には分からない
関数が2つほど出て来てるので
いまから必死こいて勉強したいと思います。
ありがとうございました。
0779nobodyさん04/10/25 22:30:48ID:???
>>776

$input = "999− 9  9 9―99 9 9";
$before = array("−","ー","ー","−","―");

$input=mb_convert_kana($input,"as","EUC-JP");

$input = str_replace ($before, '-', $input);
$input = str_replace (' ', '', $input);

print($input);

こんなんでもいいんじゃない?
078074104/10/25 22:59:58ID:???
>>762
なるほど。質問1についてとても参考になりました。
アクセスしただけで、count(例)というフィールドの値を読み出して
1足して書き込む。これってある意味、編集であるわけじゃないですか。
そのカウントアップするphpに変なクエリ(漠然としかわかってないです)を
つけたURLを送ったりして変なことされちゃうという危険性はどうなんでしょうか?
別テーブルでやります。
自分で調べたところ、フィールド内の値の更新は、mysqlの場合
自動的にロックされると理解したんですが同時アクセス(更新)に対しての問題はいまいち理解不足。
質問2-3はおっしゃるようにしようかと思います。

自分のように、中途半端な知識のまま、覚えたてのことだけでなんとかして
業務に使わなくてはならないのは、悲惨なんだか恵まれてるんだか、
自分でもよくわからなくなってきますた。

ひと月くらいの間でphpとmysqlのことばかりでちょっと頭おかしくなりそうです。
0781nobodyさん04/10/25 23:25:34ID:???
>>780
テーブルに書き込む前段階で入力値チェックすればいい。
自分が想定した以外の値が来たらエラーを返すようにする。

アクセス→カウントUPだけなら変なクエリも糞もない気はするけどな〜。

むしろ、他の部分で気を付けるようにして欲しい。
078274104/10/26 00:03:37ID:???
>>781
ご丁寧に有り難うございました。
幸い、漏れて困るような情報は扱わないので、その辺は気楽です。
このところ、一気に詰め込みすぎたせいか、なんだか、えらく作業の効率が悪いです。
ここひと月ほど、休みも自宅でどっぷりでしたから。たまには気分転換もしないと・・・
0783nobodyさん04/10/26 03:20:50ID:???
>>779
おお〜これなら今の私でもわかる!!
なるほど…asで先に全角を半角にしてしまう手があったんですね…
理解してしまうと何でこんな単純なことががが・・・
自分で書いたやつがとってもお恥ずかしい限りです(汗)

777さんの9〜10行目の"/ほにゃらら/"このスラッシュが何の役割を
しているのかが分かりませんでしたが、大変勉強になりました
779と777の御二方ありがとうございました。
0784nobodyさん04/10/26 05:07:44ID:nD9jwmRQ
print "<FRAMESET rows=60,*>\n";
print "<FRAME name=up src=$PHP_SELF?mode=entry>\n";
print "<FRAME name=bottom src=$PHP_SELF?mode=output1>\n";
print "</FRAMESET>\n";

現在、↓のプログラムのボタンを押すと、Frame上部の画面(upの画面)が、変わる仕組みになっています。
これを↓のプログラムのボタンを押すと、上下両方の画面とも(Frameのupとbottom)更新されるようにする
方法を教えてください。

print "<FORM name=form2 method=POST target=up action=$PHP_SELF?mode=entry>\n";
print "<INPUT TYPE=SUBMIT NAME=b_act VALUE=ボタン>\n";
print "</FORM>\n";
0785nobodyさん04/10/26 06:16:50ID:???
>>784
JavaScript使えば?
0786nobodyさん04/10/26 06:47:09ID:???
>>784
frameset自身を更新すれば?
0787カポコン04/10/26 19:33:02ID:???
>>783
真珠交互の正規表現
0788nobodyさん04/10/26 20:08:06ID:???
array_spliceで配列$linesからキー$keyだけを削除したいんですが
array_splice($lines, $key, 1)
だとうまくいきません。
どうしたらいいですか?
0789nobodyさん04/10/26 21:21:06ID:???
>>788
array_values()
079078804/10/26 22:06:06ID:3sXEVKxI
>>789
array_values()でどうしたら特定の要素を削除できるんですか?
0791nobodyさん04/10/26 22:28:11ID:???
array_splice($lines, array_search($key, array_keys($lines)), 1);
0792カポコン04/10/26 22:56:36ID:???
>>790
ID出てますよー
0793 ◆.jC7ANgFY. 04/10/26 23:04:41ID:???
>>788
unset($lines[$key]);
ってことかい?
079478804/10/27 01:01:26ID:???
訂正
array_spliceで配列$linesから$lines[$key]だけを削除したい
でした。
おそらく793のやり方でいけそうです。
791,793さん、ありがとうございました。
0795nobodyさん04/10/27 01:40:01ID:cq+DW3Jz
すいません。質問させて下さい。

$line='p180';

とあり、preg_match()を使って、pと180に分けたいのですが、PHPの
マニュアルやら、手持ちの本やらを見てもさっぱりわかりません。
わかる方、教えて頂けると助かります。
0796nobodyさん04/10/27 01:44:04ID:???
>>795
文字列の最初が必ずpになるのならsscanfでいいじゃまいか
0797nobodyさん04/10/27 01:47:36ID:???
>>795
それだけの条件じゃいまいちワカランがな。
先頭のアルファベットと後ろの数字を分けるなら、
preg_match('/^([A-Za-z]*)([0-9]*)/',$line,$reg);
print_r($reg);
079879504/10/27 01:52:25ID:???
>>797
(;・∀・)モシカシテ・・・

おー!できましたー!!!
ありがとうございます。本当にありがとうございます。(つД`)

>>796-797に幸あらん。
0799nobodyさん04/10/27 01:56:53ID:???
>798
PHPっつーか、正規表現だよん。
0800nobodyさん04/10/27 12:00:43ID:???
質問です。

RedHat Linux + PHPのサーバーからWindows + SQL Serverにアクセスしたのですが、
MS SQL関数は使えないのでしょうか?
調べてみるとsybase関数を使うという記述があったようなのですが、
資料が乏しくて理解に困っております。

どなたかご教授頂けないでしょうか。
よろしくお願いします。
0801nobodyさん04/10/27 12:54:42ID:???
>>800
http://jp2.php.net/manual/ja/ref.mssql.php
>注意: MSSQL拡張モジュールは、Win32システムでのみ利用可能です。

参考
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&q=unixodbc+freetds
0802nobodyさん04/10/27 14:34:57ID:???
Q.
Turbo Linux + PHP + qmail で mail()関数を使いたいと思っています。
ところが“Fatal error: Call to undefined function: mail()”が発生します。

PHPのマニュアルを読むと、qmailの場合は
sendmail_pathにパスを設定すると書いてあります。
“Qmailユーザは、通常、 /var/qmail/bin/sendmailまたは /var/qmail/bin/qmail-injectに設定します。”

php.iniのsendmail_pathには/var/qmail/bin/qmail-injectが設定されていますし、
ファイル自体も存在しています。
qmailデーモンも立ち上がっています。

どんな問題が考えられるでしょうか?
0803nobodyさん04/10/27 14:45:14ID:???
>>802
エラーレベルを上げてもっとたくさん報告してもらうようにするとか。
/var/qmail/bin/sendmailを(シンボリックリンクとして)作ってみるとか。
定義済みの関数一覧を出力してみてmail()が存在するかどうか確認してみるとか。

それぞれの方法は自分で調べてくれ。
0804nobodyさん04/10/27 15:04:11ID:???
>>803
エラーレベル:
E_ALL にしてもFatal errorの表示のみ

シンボリックリンク:
/var/qmail/bin/sendmail は既に存在したので、
php.iniでそっちを指定しても状況変わらず

定義済み関数一覧:
main()は存在せず・・・。

という結果となっています。
0805nobodyさん04/10/27 15:04:54ID:???
>>802
qmailで送信できてるかテストしてみた?
echo to: your@mail.addr | /var/qmail/bin/qmail-inject
080680204/10/27 15:09:45ID:???
>>805
あ、こんな方法があるんですね。
ありがとうございます。

その方法では送信成功しました。

mail() → Fatal error
mb_send_mail() → FALSE
imap_sendmail() → TRUE(1)
全て送信失敗です・・・。
080780204/10/27 15:13:22ID:???
訂正
imap_sendmail() → imap_mail()
0808nobodyさん04/10/27 15:27:49ID:???
mail
でgoogleでイメージ検索して、2段目の最初の画像を見てみろ。
それが答えだ。
0809nobodyさん04/10/27 15:31:07ID:???
>>806
1.telnetでlocalhostの25番Portに接続
2.接続できたらSMTPコマンドで送信テスト

これも問題ないようであれば原因はqmailじゃないと思うよ
0810nobodyさん04/10/27 15:34:21ID:???
>>808
×2段目の最初
○1段目の一番右
0811nobodyさん04/10/27 16:24:33ID:???
Apache moduleのとき、safe_mode On に何の意味があるのか教えて。
スクリプトファイルのオーナーuidとhttpdの実行uidが違う場合に
激しく不便なんだけど。
0812nobodyさん04/10/27 16:28:15ID:???
レンタルサーバーぐらいにしか使わないからoffにしとけよハゲが。
0813nobodyさん04/10/27 18:56:54ID:8mNdDRME
質問です。

PCREで、正規表現側に日本語文字列を使うとき、みなさん、どうしていますか?
マッチさせるテキストが日本語の場合は問題ありませんが、
正規表現に文字クラスを使うと、日本語の文字が1バイト文字の2文字として解釈されて困っています。

UTF-8を試してみたのですが、改善されませんでした。
おそらく既出だとは思うのですが、過去ログはすでに倉庫行きで見れません。

よろしくお願いします。
0814nobodyさん04/10/27 19:00:29ID:8mNdDRME
ちょっと表現がおかしかったので訂正します。

>マッチさせるテキストが日本語の場合は問題ありませんが、
これは、マッチさせるテキストは問題を引き起こさないという意味で、
正規表現が日本語の場合は、テキスト側のコードが何であっても問題が起こりました。

よろしくお願いします。
0815nobodyさん04/10/27 19:08:50ID:???
>>802
メールを使わないものとしてコンパイルされたphpじゃないの?

>>813
mb_* 系の正規表現関数の話なの?
081680204/10/27 19:50:02ID:???
>>815
関数一覧にmail()関数がなくなるようなインストールの仕方って、
どんなのなんですかね・・・。

http://people.paperclip.com.pe/jaguar/writeups/mailerror.php
ここを見て、qmailの方が後にインストールされた場合は
そんなこともあるから、PHPを再ビルドしろ(合ってますかね?)
という旨書いてあったので

make clean
make
make install
したのですが状況は変わりませんでした。

mail関数は標準関数なのに・・・。
0817nobodyさん04/10/27 20:11:41ID:???
>>816
apache止めてからやった?
081880204/10/27 20:11:44ID:???
orz・・・

./configure からやり直したらmail()関数が使えるようになりました。
qmail をインストールした後にconfigureしないと、
mail()関数は有効にならないようです。

お騒がせしました。
0819nobodyさん04/10/27 20:24:16ID:???
apacheの問題であってphp全く関係なかったな
逝け
082080204/10/27 20:28:24ID:???
apache関係ないです。
コマンドライン起動のPHPです。
0821nobodyさん04/10/27 21:53:39ID:mWarabBu
phpってエロサイトに多いね。
0822 04/10/27 23:58:58ID:???
エロは進化への糧だね
0823nobodyさん04/10/28 01:19:45ID:???
実践ハイパフォーマンスMySQL読んでたら
Yahoo!がPHPとMySQL使ってる事例が結構出てきた。
普通に大規模サイトで使えるんだね。
■ このスレッドは過去ログ倉庫に格納されています