Copy & Paste Engineer

【PHP】ノーブレークスペース(\u00a0)への対処

ノーブレークスペース(\u00a0)への対処

HTML を解析するプログラムを書いていたら置換などが出来ない 空白( ) を発見しました。

調査

該当の文字列のユニコードの値を取得するため json にしてました。

$html = 'hoge piyo';
var_dump(json_encode($html, true));

※サンプルの空白は通常のスペースになっています。

string(14) "hoge\u00a0piyo"

これで文字列を特定出来ました。

\u00a0

このスペースは ノーブレークスペース というもので HTML&nbsp の事。

対処

文字列として対処

$html = 'hoge piyo';

$exp = expload (`\u{00a0}`, $html);
var_dump($exp);

正規表現で対処

$html = 'hoge piyo';

$exp = preg_split (`~\x{00a0}~siu`, $html);
var_dump($exp);