日本語と半角英数の間にスペースを挿入する

最初に言っておきますが、コピペです。作者の方にはまだ許可を取っていません連絡しました。。私が書いたコードではありませんです。

私も困っていたんです。半角英数が日本語の中に突然挿入されると、見にくいと思いませんか。私は改行位置云々よりも見にくくって仕方がありませんでした。で、半角英数が間に挟まる場合に自分で半角スペースを挿入していました。これめんどくさいんですよね。つい忘れるし。

ということで、つらつらと Web を徘徊していたら見つけてしまいました。まさにこれです。これ! ということで、早速コピペしましたよ。

  にて日本語文中で半角英数字の使用するとき前後に狭いスペース   を自動で挿入し文字間隔(字送り)を調節する関数をつくりました。変な位置での改行がなくなるし、半角英数字の前後に少し間が開くので文章も読みやすくなります。 

WordPress にて日本語と半角英数字の間に狭いスペースを自動で挿入する : トイレのうず/ブログ

これです。丁寧な説明がリンク先にありますので、それを参照していただければ OK です。しかし、同じような悩みがある場合、あちこちリンクをたどるのも何ですので、コードはこっちにも書いておきますね。

function add_space_full_width_half_width( $content ){
	//<pre>タグで分割
	$content_arr = preg_split('/(<pre\s*(?:"[^"]*"|\'[^\']*\'|[^\'">])*>.*?<\/pre>)/is', $content, -1, PREG_SPLIT_DELIM_CAPTURE);
	
	$content = '';
		
	foreach($content_arr as &$value){
		if(strpos($value,'<pre') === false){
		  //<>[]"'改行を除く半角英数字と隣り合ってるとき狭いスペースを挿入、タグの接するときはタグを覗いたパターンで判断
		  $content .= preg_replace( array( '/(?<![!-~\s]|^)((?:<("[^"]*"|\'[^\']*\'|[^\'">])*>)*)(?=[!#-&(-;=-Z\\\-~])/', '/(?<=[!#-&(-=?-\\\^-~])((?:<\/[a-zA-Z0-9]+>)*)(?![!-~\s]|$)/', '/(?<![!-~\s]) +(?=[!-~])/', '/(?<=[!-~]) +(?![!-~\s])/' ) , array( ' $1', '$1 ', ' ', ' ' ) , $value );
			} else {
			$content .= $value;
		}
	}
	
	return $content;
}
add_filter( 'the_content', 'add_space_full_width_half_width', 5);
add_filter( 'comment_text' , 'add_space_full_width_half_width', 5 );
add_filter( 'the_title' , 'add_space_full_width_half_width', 5 );

内容については検証したり解析したりしていません。ホントコピペです(滝汗

テーマの関数ですね。 Function.php ファイルの末尾に貼り付けました。すごいですね。ちゃんと動作します。

さて、作者さんにお礼とブログ転載のお礼をしなければ …


私は木の立つ姿が好きです。なぜなら木々は自分たちの生きねばならぬ道に、ほかのものよりずっと素直に従っているからです。

ウィラ・キャザー

投稿者プロフィール

會澤 賢一
新潟県在住。1964年生まれ、東京オリンピックの年ですね。
突然燃え上がったり、鎮火したり興味の波が激しいので注意が必要です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください