2012年12月31日 : してログ

未定義変数を判断したい場合は、void(0) と比較します。

if (x == void(0)) alert('undefined');

undefined 定数との比較でも実現できますが、この場合、古いブラウザで動かない場合があるので、void(0) を用いた方が良いと思います。

if (x == undefined) alert('undefined');

[HTML] XHTMLひな形

HTML 20121231

もう XHTML UTF-8 でしかサイト作らなくなったな...。

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta http-equiv="Content-Script-Type" content="text/javascript" />
	<meta http-equiv="Content-Style-Type" content="text/css" />
	<link rel="stylesheet" type="text/css" href="stylesheet.css" />
	<script type="text/javascript" src="javascript.js"></script>
	<title>Site name</title>
</head>
<body>
	...
</body>
</html>

このサイトで導入した、Googleカスタム検索ですが、標準では検索結果をクリックした場合、新しいタブが開かれて少し不便でした。ウェブ上のコントロールパネルの設定ではそのようなオプションが無いのですが、検索結果コンポーネント(gcse:searchresults-only)に属性値を与えてあげることで実現できました。

<gcse:searchresults-only linkTarget=""></gcse:searchresults-only>

他にも色々と指定できるみたいなので、このあたりで調べてみてください。

文字列操作系関数を使っても簡単だが、専用の関数が用意されています。

$pif = pathinfo('/path/to/filename.ext');

処理結果はこのように格納されます。

Array
(
    [dirname] => /path/to
    [basename] => filename.ext
    [extension] => ext
    [filename] => filename
)

置き換え用のタグを連想配列($row)で置き換える例です。どちらとも同じ動きをします。

PHP5.3以降では、クロージャスコープを使ってすっきり書くことができます。

$row  = array( ... );
$html = preg_replace_callback(
	'//',
	function ($match) {
		return $row[$match[1]];
	},
	$html
);

PHP5.3未満では、create_function を使って力技で展開すれば実現できます。

$row  = array( ... );
$seri = serialize($row);
$html = preg_replace_callback(
	'//',
	create_function(
		'$match',
		'$seri = '.var_export($seri,true).';'.
		'$row = unserialize($seri);' .
		'return $row[$match[1]];'
	),
	$html
);