PHPの正規表現で1文字スペースだけ置換する

How to replace a single space using preg_replace in PHP

この記事は次のブログに引っ越しました。

■How to replace a single space using preg_replace in PHP 00:54 How to replace a single space using preg_replace in PHPを含むブックマーク CommentsAdd Star preg_replaceで、空白文字1つだけをマッチさせて置換させるための正規表現 ?php $sResult = str_replace("#(\S)(\s)(\S)#" , "\\1●\\3", $str); ? 以下はコメントとスペースを削除する関数の例 ?php function fCallbackStrip($sScript){ $aReplace = array( "#(\S)(\s)(\S)#" = "\\1X●●●●●X\\3", /* ここで空白文字をマーキング(置換) */ "#\t#" = "", "#\n#" = "", "#/\*.*?\*/#s" = "", /* C言語風コメントを削除 */ "#\s\s+#" = "", /* 過剰なスペースを削除 */ ); $aSearch = array_keys($aReplace); $sScript = preg_replace($aSearch, $aReplace, $sScript); /* 置換用配列 */ $aReplace = array( "X●●●●●X" = " ", /* ここで戻す */ ": " = ":", "; " = ";", " {" = "{", " }" = "}", ", " = ",", "{ " = "{", ";}" = "}", /* 末行のセミコロン削除 */ ",\n" = ",", /* セレクタの改行を削除 */ "\n}" = "}", /* 大括弧前の改行を削除 */ "} " = "}\n", /* 大括弧ごとに1行にまとめる */ ); $aSearch = array_keys($aReplace); $sScript = str_replace($aSearch, $aReplace, $sScript); return trim($sScript); } ? ソースコードをMINIMIZE化(軽量化)する場合などで、連続スペースを1つの空白文字(スペース)に置換する処理を行うことがあります。 しかし、ソースコード上のインデントをタブでなくスペースで行っていた場合、余計なシングル・スペースが出来ることになります。 回避方法としては、予め1つのみの空白文字を別の文字に置き換えておいて、連続するスペースだけを削除した後にスペースに置き換えます。 ■流れ " meta charset='UTF-8' " ↓ " meta●charset='UTF-8' " ↓ " meta●charset='UTF-8' " ↓ " meta charset='UTF-8' "