<?php
function chink_space($s) {
print($s . "\n");
$s = preg_replace('/(?<=[^A-z0-9]) +(?=[^A-z0-9])/', '', $s); print($s . "\n");
}
function chink_space_u($s) {
print($s . "\n");
$s = preg_replace('/(?<=[\p{Han}\p{Hiragana}\p{Katakana}]) +(?=[\p{Han}\p{Hiragana}\p{Katakana}])/u', '', $s); // $s = preg_replace('/(?<=[\p{Han}]) +(?=[\p{Han}])/u', '', $s);
print($s . "\n");
}
chink_space('明日 日比谷公園 に 向かい ます ので、何卒 よろしくお願いいたします。');
chink_space('これは MR32 という 製品で 93年に対応した 製品です 【未使用品】');
print("--- Unicode character property\n");
chink_space_u('明日 日比谷公園 に 向かい ます ので、何卒 よろしくお願いいたします。');
chink_space_u('これは MR32 という 製品で 93年に対応した 製品です 【未使用品】');
chink_space('これは MR32 という 製品で 93年に対応した 製品です 【未使用品】');
chink_space('これは π という 製品で 93年に対応した 製品です 【未使用品】');
PD9waHAKCmZ1bmN0aW9uIGNoaW5rX3NwYWNlKCRzKSB7CglwcmludCgkcyAuICJcbiIpOwoJJHMgPSBwcmVnX3JlcGxhY2UoJy8oPzw9W15BLXowLTldKSArKD89W15BLXowLTldKS8nLCAnJywgJHMpOwoJcHJpbnQoJHMgLiAiXG4iKTsKfQoKZnVuY3Rpb24gY2hpbmtfc3BhY2VfdSgkcykgewoJcHJpbnQoJHMgLiAiXG4iKTsKCSRzID0gcHJlZ19yZXBsYWNlKCcvKD88PVtccHtIYW59XHB7SGlyYWdhbmF9XHB7S2F0YWthbmF9XSkgKyg/PVtccHtIYW59XHB7SGlyYWdhbmF9XHB7S2F0YWthbmF9XSkvdScsICcnLCAkcyk7Ci8vCSRzID0gcHJlZ19yZXBsYWNlKCcvKD88PVtccHtIYW59XSkgKyg/PVtccHtIYW59XSkvdScsICcnLCAkcyk7CglwcmludCgkcyAuICJcbiIpOwp9CgpjaGlua19zcGFjZSgn5piO5pelIOaXpeavlOiwt+WFrOWckiDjgasg5ZCR44GL44GEIOOBvuOBmSDjga7jgafjgIHkvZXljZIg44KI44KN44GX44GP44GK6aGY44GE44GE44Gf44GX44G+44GZ44CCJyk7CmNoaW5rX3NwYWNlKCfjgZPjgozjga8gTVIzMiDjgajjgYTjgYYgIOijveWTgeOBpyA5M+W5tOOBq+WvvuW/nOOBl+OBnyDoo73lk4HjgafjgZkg44CQ5pyq5L2/55So5ZOB44CRJyk7CnByaW50KCItLS0gVW5pY29kZSBjaGFyYWN0ZXIgcHJvcGVydHlcbiIpOwpjaGlua19zcGFjZV91KCfmmI7ml6Ug5pel5q+U6LC35YWs5ZySIOOBqyDlkJHjgYvjgYQg44G+44GZIOOBruOBp+OAgeS9leWNkiDjgojjgo3jgZfjgY/jgYrpoZjjgYTjgYTjgZ/jgZfjgb7jgZnjgIInKTsKY2hpbmtfc3BhY2VfdSgn44GT44KM44GvIE1SMzIg44Go44GE44GGICDoo73lk4HjgacgOTPlubTjgavlr77lv5zjgZfjgZ8g6KO95ZOB44Gn44GZIOOAkOacquS9v+eUqOWTgeOAkScpOwpjaGlua19zcGFjZSgn44GT44KM44GvIO+8re+8su+8k++8kiDjgajjgYTjgYYgIOijveWTgeOBpyA5M+W5tOOBq+WvvuW/nOOBl+OBnyDoo73lk4HjgafjgZkg44CQ5pyq5L2/55So5ZOB44CRJyk7CmNoaW5rX3NwYWNlKCfjgZPjgozjga8gz4Ag44Go44GE44GGICDoo73lk4HjgacgOTPlubTjgavlr77lv5zjgZfjgZ8g6KO95ZOB44Gn44GZIOOAkOacquS9v+eUqOWTgeOAkScpOwoK