エスケープ
//変数strをエスケープ str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/'/g, '´').replace(/"/g, '"').replace(/\\/g, '¥');
まぁ普段はescape()とかencodeURI()とかencodeURIComponent()を使えばいいよ。
インクルード先tplファイルの変数にアクセス
インクルード先(inc.tpl)
{~$array = array('a', 'b', 'c')~}
インクルード元
{~include file="inc.tpl" scope=parent~} {~print_r($array)~}
ツイートからハッシュタグとURLを取り除く
<?php $str = preg_replace('/( | |)(#{1,140})([ー゛゜々ヾヽぁ-ヶ一-龠a-zA-Z0-9a-zA-Z0-9_ア-ン゙゚ァ-ォャ-ョー。「」、]{1,100})( | |)/u', '', $str); //ハッシュタグ $str = preg_replace('/( | |)(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)( | |)/', '', $str); //URL
急いで書いて超荒いのであとで直す
正規表現でマッチ箇所をランダムに置換
<?php public function hoge() { print preg_replace_callback($pattern, array($this, 'fuga'), $subject); } private function fuga($matches) { return $this->array[ array_rand($this->array, 1) ]; }
順位を取得。※但し参照するレコードが増えるとクソ重い
pointフィールドを元に、降順で自分の順位を求める。※存在しないidでも_rank_が1になるので要注意
▼pointが同値の場合、タイ扱い
SELECT count(*)+1 AS _rank_ FROM HOGE_TABLE WHERE point > (select point FROM HOGE_TABLE WHERE id = ?);
▼pointが同値の場合、DISTINCTでまとめて重複を除外
SELECT count(DISTINCT point)+1 AS _rank_ FROM HOGE_TABLE WHERE point > (select point FROM HOGE_TABLE WHERE id = ?)
指定順位(5〜10位)のランキングを降順で取得
実装する場合は順位をプレースホルダにすればいいよ。
▼pointが同値の場合、タイ扱い
SELECT tmpTable1.id, tmpTable1.point, ( SELECT count(tmpTable2.point) FROM HOGE_TABLE as tmpTable2 WHERE tmpTable2.point > tmpTable1.point )+1 as _rank_ FROM HOGE_TABLE as tmpTable1 WHERE ( SELECT count(tmpTable2.point) FROM HOGE_TABLE as tmpTable2 WHERE tmpTable2.point > tmpTable1.point )+1 >= 5 AND ( SELECT count(tmpTable2.point) FROM HOGE_TABLE as tmpTable2 WHERE tmpTable2.point > tmpTable1.point )+1 <= 10 ORDER BY tmpTable1.point DESC
▼pointが同値の場合、DISTINCTでまとめて重複を除外
SELECT DISTINCT tmpTable1.point, ( SELECT count(DISTINCT tmpTable2.point) FROM HOGE_TABLE as tmpTable2 WHERE tmpTable2.point >= tmpTable1.point ) as _rank_ FROM HOGE_TABLE as tmpTable1 WHERE ( SELECT count(DISTINCT tmpTable2.point) FROM HOGE_TABLE as tmpTable2 WHERE tmpTable2.point > tmpTable1.point )+1 >= 5 AND ( SELECT count(DISTINCT tmpTable2.point) FROM HOGE_TABLE as tmpTable2 WHERE tmpTable2.point > tmpTable1.point )+1 <= 10 ORDER BY tmpTable1.point DESC