Hatena::Groupasakura

浅倉卓司@blog風味? このページをアンテナに追加 RSSフィード

Error : RSSが取得できませんでした。

2007-03-30(Fri)

checkboxやselectを同期させるJavascriptって

| 23:07 |  checkboxやselectを同期させるJavascriptって - 浅倉卓司@blog風味? を含むブックマーク  checkboxやselectを同期させるJavascriptって - 浅倉卓司@blog風味? のブックマークコメント

 先日inputなどが所属しているformを調べていたのはcheckboxやselectを同期させるJavascriptを書くためだったのですが、「formに所属してるinput要素をピックアップしたほうが早いじゃん!」って事に気づいて*1結局使わなかったという。

 ところで、こんな感じだと重複してデータを送信しちゃうしradioで同期ができないし、こんな風だとテーブル組には使えないんだけど*2、うまい方法があったりするんでしょうかね。


preg_replace()をPerlと同じつもりで使ってハマる。

| 23:20 |  preg_replace()をPerlと同じつもりで使ってハマる。 - 浅倉卓司@blog風味? を含むブックマーク  preg_replace()をPerlと同じつもりで使ってハマる。 - 浅倉卓司@blog風味? のブックマークコメント

 相変わらずピンポイントでハマるPHPですが。

 Perl

$date =~ s#\d{2,4}[/-](\d{1,2})[/-](\d{1,2})#sprintf("%d/%d", $1, $2)#e;

――って正規表現を書くのと同じ動作をすると思ってPHP

<?php
$date = preg_replace('#\d{2,4}[/-](\d{1,2})[/-](\d{1,2})#e', 'sprintf("%d/%d", $1, $2)', $date);
?>

――と書いたのですが、うまく動かないんですな。正確には、ほとんどのデータはうまく処理されてるのに「2007/08/04」が「8/4」にならずに「0/4」になっていたんですよ。

 最初は理由が分からずにしばらく悩んでいたのですが、途中で「sprintf("%d/%d", $1, $2)」が「sprintf("%d/%d", 08, 04)」に変換されてからPHPとして実行されてることに気づき修正したのですが*3、これってPHPを使っている人的には問題ないんでしょうかね*4

*1:当初はonChangeとか書いてた。HTMLのテンプレートで出力してるから特に何も考えてなかったのです……。

*2:それともformでtrを囲ってもいいものかな?

*3Perlは「sprintf("%d/%d", $1, $2)」のまま実行してるはず。少なくとも上記はちゃんと「8/4」になります。

*4PHPを使ってる人はpreg_*なんて使わないのかもしれないけど。

トラックバック - http://asakura.g.hatena.ne.jp/asakura-t/20070330
2004 | 01 | 02 | 03 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 08 | 09 | 10 | 11 | 12 |
2007 | 02 | 03 | 04 | 05 | 06 | 07 | 10 | 11 | 12 |
2008 | 02 | 03 | 04 | 06 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 02 | 03 | 04 | 05 | 07 | 08 | 10 | 11 | 12 |
2013 | 01 | 05 | 07 |
2014 | 01 | 02 |
2016 | 01 |
2017 | 01 | 05 |