関数・クラス解説

expect_expectl

version:PECL expect >= 0.1.0 (公式)

プロセスの出力がパターンに一致する・指定した時間が経過する・ あるいは EOF に達するのいずれかにあてはまるまで待ち続ける

公式リファレンス

書式

expect_expectl ( resource $expect , array $cases [, array &$match ] ) : int

説明

プロセスの出力がパターンに一致する・指定した時間が経過する・ あるいは EOF に達するのいずれかにあてはまるまで待ち続けます。

match を指定すると、検索結果がそこに保存されます。 一致した文字列が match[0] に保存され、 元のパターンの中の (括弧で囲まれた) 部分に一致する文字列が match[1]、match[2]、 と順に、最大 match[9] まで (libexpect の制限です) 保存されます。

パラメータ

expect
事前に expect_popen() でオープンした Expect ストリーム。
cases
expect case の配列。個々の expect case は数値添字の配列で、 以下のような形式となります。
Expect Case の配列
添字 値の型 説明 必須かどうか デフォルト値
0 string ストリームからの出力との比較対象となるパターン。 yes  
1 mixed パターンに一致した場合にこの関数が返す値。 yes  
2 integer パターンの形式。 EXP_GLOB、 EXP_EXACT あるいは EXP_REGEXP のいずれかひとつです。 no EXP_GLOB

返値

一致したパターンに関連付けられた値を返します。 この関数の実行に失敗した場合は、 EXP_EOF、 EXP_TIMEOUT あるいは EXP_FULLBUFFER を返します。

更新履歴

バージョン 説明
PECL expect 0.2.1 バージョン 0.2.1 より前では、match パラメータに返されるのはマッチした文字列であり、 部分文字列の配列ではありませんでした。

サンプル

例1 expect_expectl() の例

// ファイルをリモートホストにコピーします ini_set("expect.timeout", 30); $stream = fopen("expect://scp user@remotehost:/var/log/messages /home/user/messages.txt", "r"); $cases = array(     // array(パターン, パターンに一致した場合にこの関数が返す値)     array("password:", "asked for password"),     array("yes/no)?",  "asked for yes/no") ); while (true) {     switch (expect_expectl($stream, $cases)) {         case "asked for password":             fwrite($stream, "my password\n");             break;         case "asked for yes/no":             fwrite($stream, "yes\n");             break;         case EXP_TIMEOUT:         case EXP_EOF:             break 2; // switch 文だけではなく while ループも抜けます         default:             die "エラーが発生しました!";     } } fclose($stream); ?>

参考

  • expect_popen() - Bourne シェル経由でコマンドを実行し、プロセスへの PTY ストリームをオープンする
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール