少し前、Web ページなどに書かれている一覧をコピーして、それを PHP の配列に置き換えたいということがあった。それをコードエディタの PhpStorm で解決したことがあったので、その覚え書き。
Contents
hide
テーブルの一覧
具体的には PA-API5 のドキュメンテーションの Search Index やら Valid Currencies を配列として扱いたかった。こういうやつ 。
Search Index はずらっと並んでいる。数が多く、とても手動で択一 PHP のシンタックスに書き換えるのはしんどい。それが13カ国分とコピーするのは Valid Languages, Search Index, Valid Currencies と膨大だった。これを処理するために、Regex の文字列置換機能を活用した。
クリップボードにコピーすると、大抵の場合 table
要素で描かれていたりして、テキストデータとしてコピーされ、こんな感じになる。
1 2 3 4 5 6 7 8 9 10 |
All All Departments AmazonVideo Prime Video Apparel Clothing & Accessories Appliances Appliances ArtsAndCrafts Arts, Crafts & Sewing Automotive Automotive Parts & Accessories Baby Baby Beauty Beauty & Personal Care Books Books .... |
で、これを次のように変えたい。
1 2 3 4 5 6 7 8 9 |
'All' => __( 'All Departments', 'text-domain' ), 'AmazonVideo' => __( 'Prime Video', 'text-domain' ), 'Apparel' => __( 'Clothing & Accessories', 'text-domain' ), 'Appliances' => __( 'Appliances', 'text-domain' ), 'ArtsAndCrafts' => __( 'Arts, Crafts & Sewing', 'text-domain' ), 'Automotive' => __( 'Automotive Parts & Accessories', 'text-domain' ), 'Baby' => __( 'Baby', 'text-domain' ), 'Beauty' => __( 'Beauty & Personal Care', 'text-domain' ), 'Books' => __( 'Books', 'text-domain' ), |
PHP Storm の Regex 文字列置換機能
Control + R を押してエディタ上部に文字列置換パネルを出す。
右側の Regex にチェックを入れる。
上の一つ目の検索フィールドに次の Regex パターンを入力
1 |
([ \t]{2,})([\w\p{L},&]+)([ \t]{2,})([\w\p{L},&]+(([ ][-\w\p{L},&]+){1,})?)([\n\r]) |
下の検索フィールドは以下
1 |
$1'$2' => __( '$4', 'text-domain' ), $7 |
で、array( ... )
で一覧を囲ってあげる。リスト項目の前方はスペースがある必要がある。
1 2 3 4 5 6 7 8 9 10 11 |
array( All All Departments AmazonVideo Prime Video Apparel Clothing & Accessories Appliances Appliances ArtsAndCrafts Arts, Crafts & Sewing Automotive Automotive Parts & Accessories Baby Baby Beauty Beauty & Personal Care Books Books ) |
Replace All を押して実行。
するとこんな感じで一括変換してくれる。
余談
手元にあったメモで次のような Regex のパターンがあったけど、何のためだったか全く覚えていない。
1 |
([ \t]{2,})([\w]+)([ \t]{2,})([\w\p{L},&]+(([ ][:-\w\p{L},&]+){1,})?)([\n\r]) |
確か同様のリストで拾い漏れのケース用だったかな、忘れた。