php fputs について

このQ&Aのポイント
  • phpでのfputsについての説明と、関数fputsとfwriteの違いについて教えてください。
  • phpのfputsは、関数fwriteのエイリアスです。つまり、fwriteとfputsは同じ機能を持つ関数です。
  • エイリアスは、別の名前で呼び出すことができる関数です。具体的には、fwriteとfputsは同じ処理をします。
回答を見る
  • ベストアンサー

php fputs について

こんにちは、趣味でプログラミングをしている者です。 さっそくですが質問させていただきます。 php で何かを作ったことはないのですが すこし勉強してみようと思い、 インターネットでphpの記事を見たりしていたところ、 次のような例文を見つけました。 <?php $http_response = ''; $fp = fsockopen('www.php.net', 80); fputs($fp, "GET / HTTP/1.1\r\n"); fputs($fp, "Host: www.php.net\r\n\r\n"); while (!feof($fp)) { $http_response .= fgets($fp, 128); } fclose($fp); echo nl2br(htmlentities($http_response)); ?> この例文の処理はなんとなくわかるのですが、 上記の例文で、fputs について調べようと思い以下のサイトの 記事を見ました http://www.php.net/manual/ja/function.fputs.php そこには次のように書かれていました。 fputs fwrite() のエイリアス そこで質問させていただきたいのですが、 エイリアスとはどのようなものなのでしょうか? windows のエクスプローラでいえばショートカットのような ものでしょうか? 例文で fwrite を使ってもよいのでしょうか? ご存知のかた、教えていただけないでしょうか? よろしくお願いします。

noname#173931
noname#173931
  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

他言語からの移植性、仕様上の関数名変更にともなう互換保持などを理由に 所定の関数につけられた別名です。 基本的にどちらかに優位性はないとされますが、いつか互換を はずされる危険もありますし、グループで作業する際にぶれたりするので 元の関数名で作業する方が賢明です http://www.php.net/manual/ja/aliases.php

noname#173931
質問者

お礼

さっそく回答していただきありがとうございます。 詳しく解説していただき理解を深められました。 貴重な時間をさいての回答、ありがとうございました。

関連するQ&A

  • PHPからPerl へのコンバート

    現在、PHPで作成したものをPerlへ変換しております。 Perlはあまりやった事がないので四苦八苦しております。 下記の処理をPerlへ変換する場合、どの様な記述になりますでしょうか? 精通している方、ご助言お願いいたします。 my $fp = fsockopen( $Host, "80", $ErrNo, $ErrStr, 10 ); if ( $fp ) { $out = "GET " . $Path . " HTTP/1.1\r\n"; $out.= "Host: " . $Host . "\r\n"; $out.= "Connection: Close\r\n\r\n"; fputs( $fp, $out ); while( !feof( $fp ) ) $ret .= fgets( $fp, 128 ); } fclose( $fp );

    • ベストアンサー
    • Perl
  • fputs()はfwrite()のエイリアスとは?

    『fputs()はfwrite()のエイリアス』とは何ですか? http://www.phppro.jp/phpmanual/php/function.fputs.html fwrite()はfopen()を使用してファイルを開き、引数に指定した文字列をそのファイルに書き込むための関数。 エイリアスとは、http://e-words.jp/w/E382A8E382A4E383AAE382A2E382B9.htmlによるとファイルなどの実体を別の名前で参照するためのシンボルといった意味で使われることが多い。 つまり、基本的には1つのファイルは1つの名前しか付けられないのに対して、エイリアスは複数名前を付けられる?『test.php』というAファイルがある場合、Aファイルにエイリアスとして『eiriasu.php』と設定すれば、そのAファイルを『test.php』とも『eiriasu.php』とも呼べるようになるということでしょうか? 書きこんでいて気が付いたのですが、fputs()とはfwrite()の呼び方を変えただけで中身はまったく同じということでしょうか。

    • ベストアンサー
    • PHP
  • php fsockopenの文字化けについて

    PHPプログラミングの初心者です。 現在Yahooファイナンスのページから為替情報を自動で取得するスクリプトを作成しています。 サーバーからの応答は「HTTP/1.1 200 OK」となっているのですが、取得したデータが全て文字化けして表示されます。 mb_convert_encodingを使っても結果は同じでした。 どのようにすれば文字化けを解消できるのでしょうか? 下記がスクリプトの内容です。よろしくお願いいたします。 <?php /* リクエストライン */ $request = "GET / HTTP/1.0\r\n"; $request .= "Accept: */*\r\n"; $request .= "Accept-Language: ja\r\n"; $request .= "User-Agent: PHP-".phpversion()."\r\n"; $request .= "Accept-Encoding: gzip, deflate\r\n"; $request .= "Host: finance.yahoo.co.jp\r\n"; $request .= "Connection: Keep-Alive\r\n"; $request .= "\r\n"; $fp==""; $fp =@fsockopen("finance.yahoo.co.jp", 80); /* 要求データ送信 */ fputs($fp, $request); /* 応答データ受信 */ $response = ""; while (!feof($fp)) { $response.= fgets($fp); } /* 接続を終了 */ fclose($fp); /* ヘッダ部分とボディ部分を分離 */ $DATA = split("\r\n\r\n", $response, 2); /* リクエストヘッダをコメントアウトして出力 */ echo "<!--\n".$request."\n-->\n"; /* レスポンスヘッダをコメントアウトして出力 */ echo "<!--\n".$DATA[0]."\n-->\n"; /* メッセージボディを出力 */ echo $DATA[1]; ?>

    • ベストアンサー
    • PHP
  • fsockopenで下層ページの内容を取得するには

    わたくしphp歴4ヶ月のものです。 fsockopenで下層ページの内容を取得するにはどうすればよいのでしょうか。説明がうまくできないので例を書きます。 business.yahoo.co.jp/prod/store を指定するとエラーが出ます。 例1) $fp=fsockopen("business.yahoo.co.jp/prod/store", 80, $errno, $errstr, 30); if(!$fp) { echo "$errstr ($errno)<br>\n"; } else{ fputs($fp, "GET / HTTP/1.0\r\n\r\n"); while(!feof($fp)) { echo fgets ($fp,600); } fclose($fp); } business.yahoo.co.jpを指定するとエラーが出ません。 例2) $fp=fsockopen("business.yahoo.co.jp", 80, $errno, $errstr, 30); if(!$fp) { echo "$errstr ($errno)<br>\n"; } else{ fputs($fp, "GET / HTTP/1.0\r\n\r\n"); while(!feof($fp)) { echo fgets ($fp,600); } fclose($fp); } 下層ディレクトリのページはどのように指定すればよいのでしょうか。/←スラッシュに問題があるのでしょうか。 その場合のエラーの内容は下記です。 Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/mero/public_html/test.php on line 23 Warning: fsockopen(): unable to connect to business.yahoo.co.jp/prod/store:80 in /home/mero/public_html/test.php on line 23 No such file or directory (2) 基本的な質問でたいへん恐縮ですが、 ご指導お願いいたします!

    • ベストアンサー
    • PHP
  • fputsに関して

    php初心者です。 ファイル書き込みで困っているので知っている方がいたら教えて下さい。 環境はphp5です。 //////////////////////////////////////// $fp = @fopen("書き込むファイルへのパス", "w") or die ("error\n"); fputs($fp, "<?php include(\"test.inc\"); ?>"); //////////////////////////////////////// 上記のようにしたいと考えていますが、上手く出来ません・・・。 書き込んだテキストがphpで、それを動作させたいです。 色々調べては見てるのですが、そのようなドキュメントが見つからなく困っております。 よろしくお願いします。

    • 締切済み
    • PHP
  • fputsで改行できない

    $construction='aaa'; $explanation='bbb'; define(DATA, './data'); $fp = fopen(DATA . '/' . $name, 'w') or die('ファイルを開けません'); flock($fp, LOCK_EX); fputs($fp, $construction . "\\r\\n" . $explanation) or die ('ファイルに書き込めません'); fclose($fp); 作成されたファイルを開いてみると aaa\r\nbbbと表示され、改行されません。 "\\r\\n"ではなく"\\n"のみにしても同様です。 二十引用符にしているのに、改行されません。 fputsに複数の変数を同時に入れ、それぞれの間に改行をいれるにはどうすればよいでしょうか? 文字コードはShift-JISです。 ご教示頂けると幸いです。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 特定の値をPOST送信で他のサーバーに渡したい

    あるPHPページを自動転送ページとし、転送先に特定の値をPOST送信したいと考えています。 同じような質問があり、fsockopenを使ってすると良いようなのですが、どうしても上手くいきません。 現状、POST送信は成功しているのですが、URLが自動転送ページのままで、転送先ページのテキストのみが表示されている状態です。 どうすれば転送先ページに完全に移ってしまえるでしょうか。 ご助力下さい。 <ソース> $url = "http://hoge.co.jp/test.php";  //転送先URL $method = "POST"; $headers = "POST http://hoge.co.jp/test.php HTTP/1.1\r\n";  //転送先URL $postdata = "parm=ok"; $URL = parse_url($url); if(!isset($URL['port'])){$URL['port'] = 80;} //リクエストヘッダ $request = $method." ".$URL['path']." HTTP/1.0\r\n"; $request .= $headers; $request .= "Host: ".$URL['host']."\r\n"; $request .= "User-Agent: PHP/".phpversion()."\r\n"; $request .= "Content-Type: application/x-www-form-urlencoded\r\n"; $request .= "Content-Length: ".strlen($postdata)."\r\n"; $request .= "\r\n"; $request .= $postdata; //相手サーバへ接続 @$fp = fsockopen($URL['host'], $URL['port']); // 接続失敗 if (!$fp) {die("ただいまメンテナンス中です。\n");} //POSTで送信 fputs($fp, $request); $response = ""; while (!feof($fp)) { $response .= fgets($fp, 4096); } fclose($fp); //ヘッダ部分とボディ部分を分離 $DATA = split("\r\n\r\n", $response, 2); //出力 echo "<!--\n".$request."\n-->\n"; echo "<!--\n".$DATA[0]."\n-->\n"; echo $DATA[1];

    • ベストアンサー
    • PHP
  • phpでfopen()やfputs()が使えない

    CGIを使ってやりたいことがあり、PHPを独学で学び、レンタルサーバーで実験をしているのですが、fopen()やfputs()をつかうとエラーのようになります。 これがそれです。 http://pgc.sub.jp/form.php サーバーはlolipopというところを使っているのですが、こちらのほうが許可していないということでしょうか。 ソースは以下のようになります。 <html> <head> <title>実験掲示板</title> </head> <body> <h1>実験掲示板</h1> 書き込む内容を入力してください。<hr> <form name="form" action="./sample01.php" method="POST"> <input name="body" type="text" size="40"> <input type="submit" value="書込"><hr> </form> <?php $data = file("./data.txt"); for($i=0; $i<sizeof($data); $i++){ print "記事NO.${i}:${data[$i]}<br>\n<hr>"; } ?> </body> </html> <?php $body = $_REQUEST["body"]; $body = $body."\n"; ?><html> <head> <title>Sample01</title> </head> <body> <?php $fp = fopen("./data.txt","a"); fputs($fp,$body); fclose($fp); echo "書き込み完了<br>", "<a href=\"./form.php\">戻る</a>"; ?> </body> </html> プラス空のdata.txtファイル また、大学のPCを使用しているのですが、 http://localhost/ をすると 「Connection Failed」となってしまい、localhostでの実験ができません。これは大学側が禁止しているためでしょうか?研究室のものですので、IPアドレスはそれぞれに割り当てられているのですが。

    • ベストアンサー
    • PHP
  • POP before SMTPはどうやって?

    PHPを今勉強しています。 mail関数で掲示板の内容をPOSTで送ったときにメールしようとしていますが、使用しているプロバイダのSMTPがPOP認証を必要としています。 考えとしては fsockopenでpopにアクセスしてユーザー名とパスワードを入れて接続はそのままでSMTPでメールを送る。 送ったあとに接続をCloseしようと考えていますがうまくいきません。netstatでみるとPOPにはEstablishedとなっていますので接続できていると思いますが、ユーザー認証ができているかわかりません。このような方法でPOP Before SMTPは実装できますでしょうか。 コードはこのようにしています。(一部変えています) $fp = fsockopen ("popaddress.com", 110, $errno, $errstr, 30); if (!$fp) { echo "Error msg in fsockopen is $errstr ($errno)<br>\n"; } else { fputs ($fp, "user hoge\r\n"); echo fgets ($fp,128); fputs ($fp, "pass hoge\r\n"); } mail($smtp, $msg);

    • ベストアンサー
    • PHP
  • fsockopen で allabout のサイトだけ読めない?

    PHP4 を使っているのですが、get_heaers() 関数が搭載されていないので、fsockopen を使って自作しています。下記のような感じになっています。(かなり抜粋) $parts = parse_url($url); $fp = fsockopen($parts["host"], $parts["port"], $errno, $errstr); fputs($fp, $request."\n"); $response = fgets($fp, 1024); fclose($fp); 先日まではこのコードで問題なく動作していたのですが、今日になったら http://allabout.co.jp/ 等 allabout のサイトだけが読み込めなくなってしまいました。fgets がタイムアウトしてしまいます。 ブラウザでアクセスすると問題なく表示されますし、 telnet allabout.co.jp 80 で手動でアクセスしても問題はないようです。 PHPのfgetsが(freadも)タイムアウトしてしまうのですが、どのあたりに問題があるのでしょうか。

    • ベストアンサー
    • PHP

専門家に質問してみよう