2010年5月14日金曜日

URLの正規表現による自動リンク処理

正規表現で、URLを探し、自動的にリンクさせる関数のメモ。
簡易的ですが。。

長すぎるURLは60字でトリムして表示。

function url($text){
 $regex="s?https?:\/\/[a-zA-Z0-9;\/?:@&=\+$,\-_\.!~*'\(\)%#]+";
 if(strlen($text)>60){
  $text2=mb_substr($text,0,60);
  $text2=sprintf("%s...",$text2);
 }else{
 $text2=$text;
 }
 echo preg_replace("/$regex/","<a href=\"\\0\"
      target=\"_blank\">$text2</a>",$text);
}

array_search()は配列が第二引数

array_search()は第二引数が配列。第一が、探すべきvalue。

返るのは、最初に見つかったindex番号。
なければFALSEを返すはずだが、0が返ることもあるので注意。
の様子。

2010年5月13日木曜日

複数単語のハイライト

複数単語をハイライトさせようと思い、試行錯誤して出来たので、メモです。

function highlight($content,$word){
  if(is_array($word)){
   $num=count($word);
   $lighted[0]=$content;
   for($j=0;$j<$num;$j++){
    $k=$j+1; //$kを$jの先に進めておく。
//一単語ずつハイライトしていったものを格納。
    $lighted[$k]=str_replace($word[$j],
      "<span class='highlight'>{$word[$j]}</span>",$lighted[$j]);
   }
   return $lighted[$num];
  }
  else{
   $lighted=str_replace($word,"<span class='highlight'>{$word}</span>"
     ,$content);
   return $lighted;
  }
 }

2010年5月9日日曜日

tortoiseSVNで競合に悩み。

tortoiseSVNで、黄色い三角のビックリマークが出て、コミットもできず、clean upも機能しなくてまいっていました。

結局、一度exportを実行してから「edit conflict」を選択し、競合を解消する必要がありました。

黄色い三角のビックリマークは「競合」の意味だったのですね。

以下のサイトが参考になりましたm(_ _)m

http://hide.xsv.info/tips/svnmanual/conflict/

radioボタンの文字部分もクリッカブルに

radioボタンの文字部分をクリックしても選択できるようにしたいと思い、ググって実装したのでメモ。

<input type="radio" id="id1" name="name1" value="1">
<label for="id1">radio1</LABEL>

といったように、inputタグにidを命名してやり、labelでforの対象に、先ほどのidを指定してやればOKに。

ちょっと親切。

参考になったサイト:http://fefnir.com/school/5-1.htm

2010年5月7日金曜日

正規表現でURL(リンクメモ)

正規表現でURLを判別し、リンクを自動的に適用したい、と思ったので、ググったリンクメモ。

http://www.din.or.jp/~ohzaki/perl.htm#httpURL

なんかまだよく分かりませんが、
最近、正規表現のポケットリファレンスを買ったし、本気でだんだん勉強するつもりでおります。はい。

使いこなせるとかなり素晴らしいでしょうね。

千里の道も、一歩から。。

file名の取得メモ

ファイル名を取得するために、
   echo $_SERVER['PHP_SELF'];
を使おうかと思ったが、ファイル名だけ習得すればいいので、
  $dir=dirname(__FILE__).DIRECTORY_SEPARATOR;
  $file=str_replace($dir,"",__FILE__);
  echo $file;
の方が良い感じだった。

関数化してシンプルに使いたいが、今のところ外部ファイルで独自関数化すると、その外部ファイル名が習得されてしまうので、うまくいっていない。

また、定数化したら便利だろうかと思ったが、定数は一度定義されるとそのまま、と知らず、再定義ができないなど面倒だったのでパスすることに。

PHP5.3からは、__DIR__というマジック定数が用意されたようだが、まだ環境が整備されていないことがありそうなので、これもパスすることに。