めも。
例のごとく普通に「$1」とかで参照出来るのかと思ってたら、秀丸は「\1」なのね。
例えば。
^.*abc(.*)hij$
とかやった時に。
\1
で参照する。
なぜバックスラッシュなのか。
めも。
例のごとく普通に「$1」とかで参照出来るのかと思ってたら、秀丸は「\1」なのね。
例えば。
^.*abc(.*)hij$
とかやった時に。
\1
で参照する。
なぜバックスラッシュなのか。
必要だったので作成。
※基本的に国内電話番号のフォーマット用
function getTelNumber($html) { // 全角スペースを半角に、全角数字を半角に $_source = mb_convert_kana($html, 'ns'); // 置換文字列の定義と処理 $replacePts = [ ['from' => ['(', ')'], 'to' => ['(', ')']],// 全角括弧を半角に ['from' => ' ', 'to' => ''],// スペースエンティティを削除 ['from' => ['ー', '―', '‐', '?'], 'to' => '-'],// ハイフン(と思われるもの)を置換 ]; foreach($replacePts as $pts) { $_source = str_replace($pts['from'], $pts['to'], $_source); } // 電話番号のパターンを定義 $telNumberPts = [ '/0\d{5}-\d{4}/x',// ハイフン1個 '/0\d{1,4}-\d{1,4}-\d{4}/x',// ハイフン2個 '/0\d{1,4}\(\d{1,4}\)\d{4}/x',// 中間括弧パターン '/\(0\d{1,4}\)\d{1,4}-\d{4}/x'// 先頭括弧パターン ]; $return = []; foreach($telNumberPts as $key => $pts) { preg_match_all($pts, $_source , $m); if(!empty($m[0])) { $return = array_merge($return, $m[0]); } } return array_unique($return); }
上記関数の引数に調査したい文字列を渡せばOK。
HTMLをぶん投げる想定で作成。
まだまだ甘いと思うので、今後随時アップデート予定。
str_replace()に配列を渡した際の挙動が面白かったのでメモ。
下記コードを実行すると結果は「B」ではなく「F」となる。
$search = array('A', 'B', 'C', 'D', 'E'); $replace = array('B', 'C', 'D', 'E', 'F'); $subject = 'A'; echo str_replace($search, $replace, $subject);
上記の場合「A」の置換文字列としてマッピングされているものは「B」であるが、
「B」に置換されたあと、すかさず「C」に置換されるため、
この挙動が連鎖していき最終的に「F」となる。
str_replace()は左から順番に処理されていくんだね!