2013年1月11日 : してログ

正規表現で html を処理する下記のようなコード、一行コメントアウト(ダブルスラッシュ)でコメントアウトすると致命的なエラーになります。これ、何故だか分かりますか? 私はこれで小一時間ほど、悶々としていました。

preg_match('/<a.+?>(.+?)<\/a>/su',$html,$match);

これは一行コメントアウトが、それを書いた場所から改行コードまでをコメントアウトするもの、という認識でいる限り分かりません。正しくは「改行コードまたは PHP コードブロックの終わり」までをコメントアウトするもの(こちらのマニュアル参照)です。PHP コードブロックの終わりとは、すなわち「?>」のことであり、上記の正規表現内に文字の並びとして現れています。

結果、行末までのコメントアウトとならず、途中で PHP コードブロックから外れて直接ソースコードが出力されるばかりか、致命的な構文エラーの原因となってしまいます。このようなコードをコメントアウトしたい場合は、複数行コメント(「/*」と「*/」)で囲みます。

特に、今回のような html を処理する場合の正規表現式で出てきそうな、この形は注意したいところです。

Windows サーバーにリモートデスクトップ接続で作業しているときに、ネットワーク障害などで異常切断されてしまうと、今まで作業していたデスクトップに再接続できなくなることがあります。これは、今までの接続がゾンビになって裏で動いており、再接続で新しいデスクトップが生成されるためです。前のデスクトップでバッチ処理していたり、未保存のファイルがあるときに陥ると焦りますが、回復させる方法があります。

ゾンビ接続の回復方法
  1. 再接続して新しいデスクトップを開きます
  2. タスクマネージャーからユーザーのタブを開きます
  3. ゾンビになった接続と、再接続した接続のユーザーが表示されます
  4. ゾンビになった接続を選択し「切断」ボタンを押します
  5. 再接続したほうは、ログオフします
  6. もう一度、再接続すると、ゾンビになったほうに再接続されます
参考:タスクマネージャ

ゾンビを切断する際に誤って「ログオフ」を選んでしまうと、水の泡となりますので気をつけてください。また、どちらのユーザーか分かりにくいですが、上の方がゾンビと思って間違いないと思います。もし、違う方を切断してしまっても、自分の接続が切れるだけなので心配は要りません。