馬場誠.com馬場誠Blog > Dreamweaver

‘Dreamweaver’ カテゴリーのアーカイブ

Smartyから他のViewに変えた際の正規表現メモ

2010 年 9 月 11 日 土曜日


Smartyが使われているWebシステムのView部分を、他のものに変更するときに遭遇した正規表現のメモ。
※Dreamweaver上での正規表現です。

分かる人からすればほんとうにたわいもないことですが、
正規表現を忘れさせたら右に出るものはいない私が、恥をしのんでお送りします(笑)

まずは念のためviewのディレクトリをバックアップしておき、
{を<?phpに、}を?>等に、適当に置き換えました。

<?php $value; ?>を<?php echo h($value); ?>に

その後、当然ながらこんな感じの部分
<?php $value; ?>
がたくさんに。

Smartyは、デフォルトでescape:”htmlall”がかかるように運用していた(←個人的にはあまり好きではないのですが)ので自動的にエスケープされていたのですが、Viewを変えるので、このままではマズいです。

なので、先ほどの場合なら、
<?php echo h($value); ?>
と、こんな感じにしたい。
※h()は、htmlspecialchars的な自作関数

そんな訳で、正規表現で検索置換。
検索条件は下記です。
<\?php (.*); \?>
(.*のところ大雑把ですが(汗))

置換欄はこんな感じです。簡単ですね。
<?php echo h($1); ?>

念のため一括置き換えにせず、
きちんと動くか何個か置き換えていたのですが、
問題なく変換できている模様。

……と思ったら、あるところで、余計な部分まで(下記全て)マッチしちゃいました。
<?php $item.name; ?><br /><?php $item.email; ?>

この場合、同じ行の最後の; ?>までマッチしてしまうんですね。

確かこんなのやったなぁ~と思ったのですが、
どう考えても初歩的っぽいですが対処法はもう忘れてます。(笑)

そんな訳で、いろいろ検索していたら思い出しました。
<\?php (.*?); \?>
のように、?を入れたらいいんですね。

追記: 後から考えれば、やはり
<\?php \$([a-zA-Z0-9_]+); \?>

<?php echo h($$1); ?>
に置き換える方が、ふさわしいです。
.*はちょっと大雑把にしすぎ&楽しすぎました。
(作業中はスピード重視なので、ついつい楽できる方をやってしまうんですよね。これは反省です。)

<?php $user.name; ?>を<?php echo h($user['name']); ?>に

あともう一個。
{ }を単純に<?php ?>に置き換えると、こんなのもたくさんでてきます。
<?php $user.name; ?>

これは、配列なので、先ほどの正規表現で置き換えちゃうとよろしくないです。
下記のように
<?php echo h($user['name']); ?>
するために、

<\?php \$([a-aA-Z0-9_]+)\.([a-aA-Z0-9_]+); \?>
で検索して、
<?php echo h($$1['$2']); ?>
に置き換えて解決です。
(※本来なら、最初にご紹介した方よりも、こちらの方を先にやってしまった方がいいです)

正規表現って本当に便利!

というか、あたりまえですが、これだけではなく本当はもっとたくさん置換しました。
正規表現を使わなかったらこの何倍(何十倍!?)時間がかかったのかと思うと、よかった~と思います。

フリーランス駆け出しのころは、正規表現はなんとなく知っていたけど、
(自分が至らなかったために)行錯誤する方が時間がかかることが多かったのであまり使いませんでした。
最近は正規表現の方が早くなってきたので、結構使っている気がしますね。
正規表現、プログラムを書かないWebデザイナーさんにも、ぜひお勧めしたいです。

Dreamweaverの新規ファイル作成時のフォーマット変更がうまくいかない件

2009 年 10 月 16 日 金曜日

前々からやろうと思っていたけれど面倒でやらなかった、
Dreamweaverの新規ファイル作成時に使われるフォーマットの変更を試してみました。
つまり、新規HTMLファイルを作成した際、自動的に適用されるHTMLファイル部分をカスタマイズするということです。

(続きを読む…)

Dreamweaverの正規表現:<h2>[^<].*</h2>

2009 年 8 月 5 日 水曜日

正規表現ってたまに使いますが、
忘れやすい事ワースト3に入るかもしれません。
調べれば大抵のことは解決できるのですが、
その場しのぎ的な感じでよく忘れてしまうんですね。
これまでも何度も忘れた実績(笑)があるので、
これからは些細なことでもブログでメモっていこうと思います。

(続きを読む…)

Dreamweaver CS3のカスタムショートカットを他のPCに移行する

2009 年 1 月 21 日 水曜日

自宅で休眠していたPCをオフィスに持って行った際、
Dreamweaverのショートカットを移行しようとしてちょっとだけ時間がかかったのでメモ。
(Windows XP&Dreamweaver CS3同士の移行です)

(続きを読む…)

Dreamweaver ファイル拡張子の追加メモ

2008 年 7 月 19 日 土曜日

DreamweaverでPHPのフレームワークを使用して開発していると、テンプレートファイルの編集の際に、HTML文書と認識してくれなくて、タグ補完が効かない場合があります。
そんな時の、自分用対策メモです。
(私の作業環境であるDreamweaver CS3の場合。他の環境では異なることがあります)

(続きを読む…)