WordPress にはテキスト整形のための API が用意されていて、プラグインを作るときなどにはあらかじめ知っておくと重宝します。とはいえ関数が多くて把握しきれないので、自分用のメモとしてまとめてみようと思いました。
以下、WordPress 2.1.3 の wp-includes/formatting.php で定義される関数の一覧です。気が向いたときに注釈を書き足すつもりです。
wptexturize($text)- HTML のタグを除いた本文の整形を行う。グローバル変数
$wp_cockneyreplaceを参照するのでこの変数で独自の置換パターンを定義することも可能。 clean_pre($text)<br />タグの削除、<p>タグの\nへの変換を行う。<pre>タグの内容を整形するためにwpautop()の中で使われている。wpautop($pee, $br = 1)- 空行で囲まれたテキストを段落とみなしてそれぞれ
<p></p>タグで囲んでテキスト全体を返す。 seems_utf8($str)- 文字コードを判別して UTF-8 なら真を返す。
wp_specialchars($text, $quotes = 0)- PHP の
htmlspecialchars()と同等。ただしすでに実体参照に変換済みの文字を重複変換しない。 utf8_uri_encode($utf8_string, $length = 0)- UTF-8 の文字列に対して URI エンコード処理を適用。
remove_accents($string)- 引数文字列に含まれる US-ASCII 外のアルファベット(アクセント記号付、ウムラウト記号付や合字など) を US-ASCII の範囲の文字に置換して返す。たとえば Æ が AE に置換される。
sanitize_file_name($name)sanitize_user($username, $strict = false)sanitize_title($title, $fallback_title = '')- タイトルをサニタイズする。具体的には
strip_tags()による HTML および PHP タグの除去。サニタイズ後のタイトルが空になる場合には$fallback_titleの指定値が返される。 sanitize_title_with_dashes($title)- タイトルのサニタイズに URI エンコーディングを追加。
convert_chars($content, $flag = 'obsolete')- 第1引数で文字列を受け、そこに含まれる数値文字参照のうち、HTML 4.0 で定義されていないものを定義されたものに置換し、文字列全体を返す。第2引数は現在では使われていない。
funky_javascript_fix($text)balanceTags($text, $force = false)force_balance_tags($text)format_to_edit($content, $richedit = false)- ポストやコメントのテキストをエディタに送り込む前のフィルタとして使われる。内部で format_to_edit のフィルタを適用。それ以外では
htmlspecialchars()を適用するだけだがこれも2番目の引数の指定で除外できる。 format_to_post($content)- ポストのコンテンツを出力する際にフィルタとして使うためのものだろうと思うが現行のコードではどこにも使われてない模様。内部で format_to_post のフィルタを適用。
zeroise($number, $threshold)backslashit($string)trailingslashit($string)- 引数で与えられた文字列の末尾に / (スラッシュ) がなければ末尾に / を追加して返す。末尾に / がある場合はそのまま返す。URL やファイルパスを処理する際の正規化に使われる。
addslashes_gpc($gpc)stripslashes_deep($value)- 配列の要素にたいして再帰的に
stripslashes()を適用する。 antispambot($emailaddy, $mailto = 0)make_clickable($ret)$retで指定されたテキストに含まれる、URL やメールアドレスと思われる文字列を<a>タグに変換して返す。リンクの場合はrel="nofollow"を付ける。あまり厳密な構文チェックはしないようなので信頼性が求められる場面で使えるかは疑問。コアのコードではコメントのフィルタにのみ使われているようだ。wp_rel_nofollow($text)convert_smilies($text)- 引数の文字列に含まれるスマイリー文字列を、スマイリー画像の
<img>タグに置換して返す。 is_email($user_email)- メールアドレスとして正しいフォーマットであれば真を返す。
wp_iso_descrambler($string)get_gmt_from_date($string)- GMT 時刻を得るために、引数で指定された DateTime (Y-m-d H:i:s) から gmt_offset オプションで指定された時差の分だけ差し引いて返す。
get_date_from_gmt($string)- ローカルタイムゾーンの時刻を得るために、引数で指定された DateTime (Y-m-d H:i:s) に gmt_offset オプションで指定された時差の分だけ足して返す。
iso8601_timezone_to_offset($timezone)- ISO 8601 のタイムゾーン指定子を引数に取り、秒単位のオフセットに変換して返す。
iso8601_to_datetimeのなかで使われている。 iso8601_to_datetime($date_string, $timezone = USER)- ISO 8601 の Combined representations (例: 2007-05-12T01:58+09) による時刻を MySQL の DateTime 形式 (Y-m-d H:i:s) に変換する。デフォルトではタイムゾーンの指定を無視するが、
$timezoneにGMTが指定されている場合は時差の補正まで行う。 popuplinks($text)sanitize_email($email)- メールアドレスのフォーマットとして適正になるようサニタイズして返す。不正な文字があれば除去するが、RFC の規定に 100% 従っているわけではない。
human_time_diff($from, $to = '')$fromと$toの時間差を、「x分」「x時間」「x日」といった自然な言葉でおおまかに表現する。$fromと$toはともに UNIX タイムスタンプで指定。$toのデフォルトは現在時刻。wp_trim_excerpt($text)ent2ncr($text)- 引数の文字列に含まれる文字実体参照を数値文字参照 (numeric character references) に置換して返す。たとえば " は " に、 は   に置換される。
wp_richedit_pre($text)clean_url($url, $protocols = null)htmlentities2($myHTML)js_escape($text)- JavaScript のコードを PHP で出力する場合などに使うエスケープ。一重引用符をバックスラッシュでエスケープ、二重引用符を実体参照で置き換え、加えて改行をエスケープする。
attribute_escape($text)- HTML の属性値のためのエスケープを行う。内部的には
wp_specialchars()が呼び出される。 wp_make_link_relative($link)