「JavaScriptで記号の半角と全角を相互に変換」という記事を書きました。
そのPHP版です。
半角と全角の記号そのものを並べて置換するという極めて愚直な方法です。
置換したくない記号についてはコメントアウトします。
function convert_kigo_han_zen($str, $option) {
// option=0:半角から全角, 1:全角から半角
$pairs = array(
array(" ", " "), // 半角スペース⇔全角スペース
array("!", "!"),
array(""", "”"),
array("#", "#"),
array("$", "$"),
array("%", "%"),
array("&", "&"),
array("'", "’"),
array("(", "("),
array(")", ")"),
array("*", "*"),
array("+", "+"),
array(",", ","),
array("-", "-"),
array(".", "."),
array("/", "/"),
array(":", ":"),
array(";", ";"),
array("<", "<"),
array("=", "="),
array(">", ">"),
array("?", "?"),
array("@", "@"),
array("[", "["),
array("\", "¥"),
array("]", "]"),
array("^", "^"),
array("_", "_"),
array("`", "`"),
array("{", "{"),
array("|", "|"),
array("}", "}"),
array("~", "~"),
array("。", "。"),
array("「", "「"),
array("」", "」"),
array("、", "、"),
array("・", "・")
);
foreach($pairs as $pair) {
$before = $pair[$option];
$after = $pair[1 - $option];
$str = str_replace($before, $after, $str);
}
return $str;
}
// option=0:半角から全角, 1:全角から半角
$pairs = array(
array(" ", " "), // 半角スペース⇔全角スペース
array("!", "!"),
array(""", "”"),
array("#", "#"),
array("$", "$"),
array("%", "%"),
array("&", "&"),
array("'", "’"),
array("(", "("),
array(")", ")"),
array("*", "*"),
array("+", "+"),
array(",", ","),
array("-", "-"),
array(".", "."),
array("/", "/"),
array(":", ":"),
array(";", ";"),
array("<", "<"),
array("=", "="),
array(">", ">"),
array("?", "?"),
array("@", "@"),
array("[", "["),
array("\", "¥"),
array("]", "]"),
array("^", "^"),
array("_", "_"),
array("`", "`"),
array("{", "{"),
array("|", "|"),
array("}", "}"),
array("~", "~"),
array("。", "。"),
array("「", "「"),
array("」", "」"),
array("、", "、"),
array("・", "・")
);
foreach($pairs as $pair) {
$before = $pair[$option];
$after = $pair[1 - $option];
$str = str_replace($before, $after, $str);
}
return $str;
}
コメント