Docomoの個体識別情報iモードID(guid)取得パラメータ『guid=on』をSmartyで付ける

Smartyのポストフィルタ(postfilter)を利用して、出力されるHTMLに『 guid=on 』を付ける方法です。
キャリアごとにテンプレートを分けるのが楽になります。
これをドコモの場合だけ適用するようにします。

『utn』をSmartyで付ける方法
『NULLGWDOCOMO』をSmartyで付ける方法
個体識別情報の取得方法

<?php
/* ================================
 * relativeOabsolutePathGuid
 * pathAddGuid
 *
 * @create  2009-01-12
 * @author  pentan
 * @url     http://pentan.info/
 *
 * Copyright (c) 2009 pentan.info All Rights Reserved.
 * 著作権表示部分の変更削除は禁止です
 * ================================
 */

function relativeOabsolutePathGuid($str,$tag){
  $str=stripslashes($str);

  if(strtolower($tag)=="a"){
    if(preg_match("/href=¥"(https?|ftp):¥/¥//i",$str)){
      return $str.">";
    }elseif(preg_match("/href=¥"#/i",$str)){
      return $str.">";
    }elseif(preg_match("/href=¥"(mailto|tel|fax|news):/i",$str)){
      return $str.">";
    }elseif(preg_match("/href=¥"([^¥"]+)¥"/i",$str,$match)){
      if(preg_match("/¥?$/i",$match[1]) || preg_match("/&$/i",$match[1])){
        return preg_replace("/href=¥"([^¥"]+)¥"/i",
                "href=¥"$1guid=on¥"".">",$str);
      }elseif(preg_match("/¥?/i",$match[1])){
        return preg_replace("/href=¥"([^¥"]+)¥"/i",
                "href=¥"$1&guid=on¥"".">",$str);
      }else{
        return preg_replace("/href=¥"([^¥"]+)¥"/i",
                "href=¥"$1?guid=on¥"".">",$str);
      }
    }else{
      return $str.">";
    }
  }else{
    if(preg_match("/action=¥"(https?|ftp):¥/¥//i",$str)){
      return $str.">";
    }elseif(preg_match("/action=¥"#/i",$str)){
      return $str.">";
    }elseif(preg_match("/action=¥"(mailto|tel|fax|news):/i",$str)){
      return $str.">";
    }elseif(preg_match("/action=¥"([^¥"]+)¥"/i",$str,$match)){
      if(preg_match("/¥?$/i",$match[1]) || preg_match("/&$/i",$match[1])){
        return preg_replace("/action=¥"([^¥"]+)¥"/i",
                "action=¥"$1guid=on¥"".">",$str);
      }elseif(preg_match("/¥?/i",$match[1])){
        return preg_replace("/action=¥"([^¥"]+)¥"/i",
                "action=¥"$1&guid=on¥"".">",$str);
      }else{
        return preg_replace("/action=¥"([^¥"]+)¥"/i",
                "action=¥"$1?guid=on¥"".">",$str);
      }
    }else{
      return $str.">";
    }
  }
}

function pathAddGuid($body){
  return preg_replace("/<(a|form) ([^>]+)>/ie",
        "'<$1 '.relativeOabsolutePathGuid('$2','$1')",$body);
}

$smarty->register_outputfilter("pathAddGuid");

?>

関連記事

スポンサーリンク

BETWEEN演算子 範囲におさまっている場合に真を返す

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る