Macでプログラミング{ ..
49:46
06/11/12 01:29:16 qIdSpFu10
>>48
値の読み出し自体はアクセス権とか関係なく$value = exec('defaults read〜');で問題なかった
んだけど、読み込んだ値がエスケープされてて困るという話ですた(´・ω・`) 。
エスケープは2パターンあって、\uxxxx(16進4桁・UTF-16BE)と\xxx(8進3桁)、それと「\」
自身もエスケープされて「\\」になってるので、合計3回正規表現置換で対応できたよ。
参考までにこんな関数。
function GetPreferenceForKey($plist, $key)
{
$ret = @exec("defaults read $plist $key");
$ret = preg_replace(
'/\\\\u([0-9a-fA-F]{4})/e',
'mb_convert_encoding(pack("H*","$1"),"utf-8","utf-16be")',
$ret
);
$ret = preg_replace(
'/\\\\([0-7]{3})/e',
'mb_convert_encoding(pack("n*",octdec($1)),"utf-8","utf-16be")',
$ret
);
$ret = preg_replace('/\\\\\\\\/', '\\', $ret);
return $ret;
}
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5096日前に更新/237 KB
担当:undef