人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPについて質問です。

現在preg_match関数で抜き取った文字を変数に入れて、それをWhile文で処理しているのですが、

自分が設定した条件式とは逆に動作をしてしまいます。

例えば

$html="<TD WIDTH=\"100%\"><B>一致するページはありませんでした。</B></TD>";

preg_match('|<B>一致するページはありませんでした。</B>|',$html,$abc);


while($abc == '<B>一致するページはありませんでした。</B>'){



echo "成功です。";


}

echo "失敗です。";

この場合は 成功です。 という文字が出てこないといけないのですが

失敗です。

という文字が出てきてしまいます。

これは何故なのでしょうか?

お手数をおかけしますがわかるかたおりましたらご回答よろしくお願いいたします。

●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:ABC echo HTML PHP 変数
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● GoldenDawn
●100ポイント ベストアンサー

やりたいことがコードからよく読み取れないのですが……

なぜ「成功です。」と表示されないのかというと

$abc == '<B>一致するページはありませんでした。</B>'

が真にならないからで、なぜ真にならないかというと $abc が配列だからです。

$abc[0] == '<B>一致するページはありませんでした。</B>'

にすると真になりますが、それだけだと永久ループになってしまいます。

実際のコードでは while の中で他の処理が入るのでかまわないというのならよいのですが、

一回だけなら if でいいですし、複数回マッチさせてそれぞれに処理なら preg_match_all を使い、

preg_match_all('|<B>一致するページはありませんでした。</B>|',$html,$abc);
foreach ($abc as $m){
 if ($m == '<B>一致するページはありませんでした。</B>') echo "成功です。";
}

とかになるでしょう。

「失敗です。」はループの外にあるので「成功しました。」表示されてもループを抜ければ表示されることになりますね。

◎質問者からの返答

ご回答ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ