• ベストアンサー

preg_replace 英数字以外の文字の前後のスペースを削除

preg_replaceで 英数字の前後いずれかのスペースは残して それ以外のスペースを消したいのですが あ a間が消えてしまいます。(英数字前なので消さない) a aはのこるので英数字後のスペースは残せてます。 <?php $str = \"あ a a\"; $txt = preg_replace(\"/([^a-zA-Z\\d])\\s+/u\", \"$1\", $str); echo $txt;

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

たとえばこんな感じ <? $str="aaa"; delspace($str); $str=" aaa"; delspace($str); $str=" あああ"; delspace($str); $str="aaa "; delspace($str); $str="あああ "; delspace($str); $str="aaa bbb"; delspace($str); $str="あああ いいい"; delspace($str); $str="aaa あああ いいい bbb ccc"; delspace($str); function delspace($str){ $pattern="/(?<![0-9a-z])(\s)(?![0-9a-z])/i"; $str2=preg_replace($pattern,"",$str); print "'".$str."' =&gt; '".$str2."'<br>"; } ?>

tamurad007
質問者

お礼

完璧です ありがとうございました

関連するQ&A