スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

エスケープ文字の処理

今まであえて技術的な事はあまり書かなかったのですが、自分のリマインダ用とご興味のある方のために、今後は時々ブログにもアップしたいと思います。ちなみに、ALAINはPHPで作成されています。


今回は、エスケープ文字の処理です。最初は「preg_quote」を使おうとしたのですが、返還前の文字列にエスケープ文字を追加するだけなので、ALAINの発言にもエスケープ文字が付いてしまいました(誤動作はこれでも防げますが)。

例1)
. \ + * ? [ ^ ] $ ( ) { } = ! < > | :

\. \\\\ \+ \* \? \[ \^ \] \$ \( \) \{ \} \= \! \< \> \| \:


もう少し調べてみると、「mb_convert_kana」という、様々な全角/半角変換を行うとても便利そうな関数を見つけたのですが、記号だけを変換するというオプションが無いため断念…(この関数は後々、別で使う事がありそうです)。

そして、行き着いたのがこのサイトの下記のfunctionでした。

function kigou2zenkaku( $string ){
$before = array('!', '"', '#', '\$', '%', '&', "'", '\(', '\)', '=', '~', '\|', '-', '\^', '\\\\',
'`', '\{', '@' , '\[', '\+', '\*', '}', ';', ':', ']', '<', '>', '\?', '_', ',', '\.', '/', '「', '」');
$after = array('!', '”', '#', '$', '%', '&', '’', '(', ')', '=', '~', '|', '-', '^', '¥',
'`', '{', '@', '[', '+', '*', '}', ';', ':', ']', '<', '>', '?', '_', ',', '.', '/', '「', '」');
foreach( $before as $i=>$pattern ){
$replacement = $after[$i];
$string = mb_ereg_replace( $pattern, $replacement, $string );
}

return $string;
}


以前、ereg関数がUTF-8でうまく動かない事があったのでちょっと不安でしたが、今回は検索対象が半角文字という事ですんなりと動作しました。結果から言うと、「必要な部分だけ全角に置き換える」という当たり前かつ無難な結果となりましたw

こういったソースをアップしてくれている方は、私の用なプログラム初心者にとって崇拝の対象です。
というわけで、今回の作業時間は30分で完了。めでたし。

コメントの投稿

非公開コメント

プロフィール

hak

Author:hak

会話プログラムALAINの開発日誌と会話ログ。ALAINとの会話はどなたでもお気軽にどうぞ。相手はプログラムなので、寛容に接して楽しんで頂けると幸いです。

近況報告
 
リンク
最新記事
カテゴリ
月別アーカイブ
検索フォーム
RSSリンクの表示
QRコード
QRコード








上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。