Posted by booyaa on 2月 20, 2010 in
PHPで開発
たとえば
http://www.example.com/test.html
へリクエストをした場合、リライトしていなければ
basename($_SERVER[‘SCRIPT_NAME’])
で「test.html」が取得できますね。
しかし、例えばリライトしていて実際は
index.php?script=test
がリクエストされている場合は
「index.php」が取得されてしまいます。
ここで、「text.html」を取得するには、ちょっと面倒ですが$_SERVER[‘REQUEST_URI’]を利用します
//リクエストしたURIを解析する
$url_parts = parse_url($_SERVER[‘REQUEST_URI’]);
//スクリプトの取得
$script_name = basename($url_parts[‘path’]);
これで一応取得できます。
ただ、
http://www.example.com/test/
へアクセスした場合は
「test」が取得されてしまうので、注意してください。
タグ: php
Posted by booyaa on 12月 3, 2009 in
PHP関数
mb_strwidth は文字列の幅を返すということなんですが、
mb_strlen や strlen とは違います。
mb_strlenは
mb_strlen(‘あいうえおaiueo’); //10
strlenは
strlen(‘あいうえおaiueo’); //20 (utf-8の場合)
一方mb_strwidthは
mb_strwidth(‘あいうえおaiueo’); //15
になります。
つまり、
英数字などは1
マルチバイト文字は2
としてカウントしてくれます。
幅に着目しているので、文字エンコードに依存しません。
ブラウザで表示する際の見た目を調整するときなんかに使えると思います
Posted by booyaa on 12月 3, 2009 in
PHP関数
array array_fill_keys ( array $keys , mixed $value )
この関数は、初期化の際に結構便利かなぁと思います
たとえば、
$key_list = array('a','b','c','d');
というような配列があって、
$array = array(
'a' => array(),
'b' => array(),
'c' => array(),
'd' => array(),
)
このように初期化したいときは
$array = array();
foreach ($key_list as $key){
$array[$key] = array();
}
のようにすると思うんですが、array_fill_keysを使うと
$array = array_fill_keys($key_list,array());
でできちゃいます。
大幅にコードを削減することはできませんが、
こんなやりかたもあるよって感じですね。
何気に好きなのでたまに使っています。
タグ: PHP関数
Posted by booyaa on 1月 17, 2009 in
Smarty
サイトのコンテンツをランダム表示したい時、
{if rand(0,1)}
表示1
{else}
表示2
{/if}
こんな感じで、シンプルにランダム表示させることができます。
便利かも?
Posted by booyaa on 1月 14, 2009 in
Smarty
private $condition_dat = array(
'length' => array(
'name' => '髪の長さ',
'mapping' => array(
'very_short' => 'ベリーショート',
'short' => 'ショート',
'medium' => 'ミディアム',
'long' => 'ロング',
),
),
'weight' => array(
'name' => '髪の太さ',
'mapping' => array(
3 => '太い',
2 => '普通',
1 => '細い',
),
),
'volume' => array(
'name' => '髪の量',
'mapping' => array(
3 => '多い',
2 => '普通',
1 => '少ない',
),
'hardness' => array(
'name' => '髪の硬さ',
'mapping' => array(
3 => '硬い',
2 => '普通',
1 => '軟らかい'
),
),
),
'unruly' => array(
'name' => 'くせ',
'mapping' => array(
3 => '強い',
2 => '少し',
1 => 'ない',
),
),
'damage' => array(
'name' => 'ダメージ',
'mapping' => array(
3 => 'ある',
2 => '少し',
1 => 'ない',
),
),
);
$report = array(
'weight' => 1
)
こんな配列があって、
テンプレート側で
{foreach from=$conditions key=condition_type item=condition_values}
{if !empty($report.$condition_type)}
{$condition_values.name} : {$condition_values.mapping[`$report.$condition_type`]}<br />
{/if}
{/foreach}
こんな感じで使おうとすると
Fatal error: Smarty error: [in index.tpl line 55]: syntax error: unrecognized tag: $condition_values.mapping[`$report.$condition_type`] (Smarty_Compiler.class.php, line 446)
って出る。。うーん、よくわからない、、
`をつけたり.でつないだりやってもうまくいかない
どうやるんだろ
タグ: Smarty
Posted by booyaa on 1月 3, 2009 in
drupal
Drupalという
オープンソース CMS アワードの二年連続優勝、二冠達成したものがあって、興味あったので入れてみました。
singlelife.booyaa.info
なのですが、infoドメインの場合ちょっと問題があって
なんとそのままの設定だとページが403forbiddenになってしまいます。
ちょっと調べたら
http://drupal.0829.info/installation-and-configuration/troubleshooting/info-domain-403
ここに答えが載っていて、どうやら.infoファイルにアクセスできないようにするために
.infoを.htaccessでアクセスできないようにしているみたい。
載っていた方法によると.htaccessの
<FilesMatch "(\.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)|code-style\.pl|Entries.*|Repository|Root|Tag|Template)$">
Order allow,deny
</FilesMatch>
赤字を削除して、modulesフォルダに
<Files ~ "\.info$">
Order allow,deny
</Files>
と記述した.htaccessを新たに設置するというもの。
確かにこれでうまくいきました^^
タグ: drupal
Posted by booyaa on 1月 3, 2009 in
wordpress
coreserver + wordpressにて画像アップロードしようとすると
「アップロードしたファイルを/virtual/○○/public_html/blog/wp-content/2009/01に移動できませんでした。」
のようなエラーメッセージが表示される場合がある
これを解決するには
wp-adminの.htaccessへ
<files async-upload.php>
AddHandler application/x-httpd-phpcgi .php
</files>
を記述すればうまくいくようになる
タグ: wordpress
Posted by booyaa on 1月 3, 2009 in
PHP関数
nl2br 改行文字の前にHTMLの改行指定文字を挿入する
string nl2br ( string string)
使い方
$string = “aaaa\nbbb”;
echo nl2br($string);
結果
aaaa<br />
bbb
phpで改行を含んだ文字列をHTMLとして出力する際に活躍します。
ここで注意なのが、
改行文字が<br />になるのではなく
改行文字の前に<br />が挿入されるということ。
改行文字列は残っているということに注意!
しばらく改行が<br />になるんだと勘違いしてました。。
タグ: PHP関数