• ベストアンサー

文字列の両端の全/半角の空白

を取り除くにはどうしたらいいのでしょうか? <?php $str='  xy z  '; echo'|'.mbereg_replace('■','\\2',$str).'|'; ?> の■の部分がわかりません ちなみに ( | )*(.*)( | )* でも勿論駄目です (「xy z」がでない) \\2の2は他の番号でも可です

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

mb_ereg_replace('^( | )*(.*?)( | )*$','\\2',$str)

reiman
質問者

お礼

ありがとうございます。 <?php $str='x'; //$str='  str str str'; //$str='  '; echo'|'.mbereg_replace('^[[[:space:]] ]*(.*?)[[[:space:]] ]*$','\\1',$str).'|'; ?> でうまくいくようです。

その他の回答 (1)

回答No.1

<?php $str='  xy z  '; $str = preg_replace("/^[ | ]*/","",preg_replace("/[ | ]*$/","",$str)); echo "|$str|\n"; ?> preg_replaceにて前後の空白を削除してみました。 ここでは、空白自体を削除していますが、preg_replaceの第二引数の部分を "\\2"などにすればよろしいかと思います。

reiman
質問者

お礼

ありがとうございます。 <?php $str="  asfda fdas\nx    d\nsaf\tdas  sdafa      "; $out=mbereg_replace('^([^[[:space:]] ]*.*?)[[[:space:]] ]*$','\\1',mbereg_replace('^[[[:space:]] ]*(.*)$','\\1',$str)); echo'|'.$out.'|'; ?> (正規表現中の空白のところは全角の空白) でもできました ご提案の方法は全角非対応の関数を使っていますが大丈夫なのでしょうか? 全角空白が混じっていても動いてはいるようです

関連するQ&A