ラベル php の投稿を表示しています。 すべての投稿を表示
ラベル php の投稿を表示しています。 すべての投稿を表示

2013年12月3日火曜日

PHPをコマンドラインで起動する時に引数にファイルの中身を渡したい

cat してパイプ。
cat data.txt | php exec.php

2013年11月5日火曜日

PHP から Google のハングアウトへメッセージを送信する

XMPPHP という非常に便利なライブラリが有るので、使わせてもらう。
ダウンロードして解凍したら、XMPPHPディレクトリを以下のスクリプトを同じ階層に置いて使う。

<?php

include 'XMPPHP/XMPP.php';
$conn = new XMPPHP_XMPP(
    'talk.google.com',  # ホスト
    5222,  # ポート
    'username',  # 送信者のアカウント
    'password',  # 送信者のパスワード
    'xmpphp',  # リソース
    'gmail.com',  # サーバ(省略するとホストが使用される)
    $printlog=false,  # ログをプリントするか
    $loglevel=XMPPHP_Log::LEVEL_INFO  # ログレベル
    # LEVEL_ERROR, LEVEL_WARNING, LEVEL_INFO, LEVEL_DEBUG, LEVEL_VERBOSE
);
try {
    $conn->connect();
    $conn->processUntil('session_start');
    $conn->presence();
    $conn->message('hogefuga@gmail.com', 'Hello, world!');
    $conn->disconnect();
} catch (XMPPHP_Exception $e) {
    die($e->getMessage());
}

ハングアウトに限らず XMPP に対応したアプリなら連携できるはず。

2013年4月12日金曜日

PHPとVB.NETでデータを加工してやり取りする

生データが嫌だけどお手軽にやりたいならビット反転して送るとか。

PHP側
$filename = "hoge.txt";
if ($handle = fopen($filename, "r")) {
  while (!feof($handle)) {
    $s = fread($handle, 1024);
    echo ~$s;
  }
}
fclose($handle);

VB.NET側
Dim filename As String = "hoge.txt";
Dim contents As String = "";
Dim bs(1024 - 1) As Byte
Dim readSize As Integer
Dim fs As New System.IO.FileStream(filename, IO.FileMode.Open, IO.FileAccess.Read)

While True
  readSize = fs.Read(bs, 0, bs.Length)
  If readSize = 0 Then
    Exit While
  End If
  For i As Integer = 0 To bs.Length
    bs(i) = Not bs(i)
  Next
  contents += System.Text.Encoding.UTF8.GetString(bs)
End While
fs.Close()

PHPでマルチバイトを含んだディレクトリのリストアップ

PHPでディレクトリをリストアップして、aタグでパラメータとして渡せるようにしてみる。
<?php

$dir = "/hoge/fuga";
if (isset($_REQUEST["dir"]) && $_REQUEST["dir"]) {
  $dir = mb_convert_encoding($_REQUEST["dir"], "SJIS", "UTF-8");
}
$html = "";

if ($dh = opendir($dir)) {
  while ($entry = readdir($dh)) {
    if (is_dir($dir . DIRECTORY_SEPARATOR . $entry) && $entry !== "." && $entry !== "..") {
      $html .= 
        "<a href=\"dir.php?dir=" . urlencode(mb_convert_encoding($entry, "UTF-8", "SJIS")) . "\">" . 
        mb_convert_encoding($entry, , "UTF-8", "SJIS") . 
        "</a><br />";
    }
  }
}

?><html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  </head>
  <body>
    <?php echo $html; ?>
  </body>
</html>

PHPでユーザーエージェント判別

$ua = $_SERVER['HTTP_USER_AGENT'];
switch (true) {
 case (preg_match('/iPhone|iPad/', $ua)):
  // iOS
  break;
 case (preg_match('/Android/', $ua)):
  // Android
  break;
 case (preg_match('/MSIE 6/', $ua)):
  // IE6
  break;
 case (preg_match('/MSIE 7/', $ua)):
  // IE7
  break;
 case (preg_match('/MSIE 8/', $ua)):
  // IE8
  break;
 case (preg_match('/MSIE 9/', $ua)):
  // IE9
  break;
 case (preg_match('/Firefox/', $ua)):
  // Firefox
  break;
 case (preg_match('/Chrome/', $ua)):
  // Chrome
  break;
 case (preg_match('/Opera/', $ua)):
  // Chrome
  break;
 case (preg_match("/Safari/", $agent)) && (preg_match("/Win/", $agent)):
  // Windows Safari
  break;
 case (preg_match("/Safari/", $agent)) && (preg_match("/Mac/", $agent)):
  // Mac Safari
  break;
 case ((preg_match("/MSIE/", $agent)) && (preg_match("/Win/", $agent))):
  // Windows IE
  break;
 case ((preg_match("/MSIE/", $agent)) && (preg_match("/Mac/", $agen))):
  // Mac IE
  break;
 default:
  // Other
  break;
}