- ベストアンサー
文字列の両端の全/半角の空白
を取り除くにはどうしたらいいのでしょうか? <?php $str=' xy z '; echo'|'.mbereg_replace('■','\\2',$str).'|'; ?> の■の部分がわかりません ちなみに ( | )*(.*)( | )* でも勿論駄目です (「xy z」がでない) \\2の2は他の番号でも可です
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
mb_ereg_replace('^( | )*(.*?)( | )*$','\\2',$str)
その他の回答 (1)
- lx_lucifer_xl
- ベストアンサー率27% (3/11)
<?php $str=' xy z '; $str = preg_replace("/^[ | ]*/","",preg_replace("/[ | ]*$/","",$str)); echo "|$str|\n"; ?> preg_replaceにて前後の空白を削除してみました。 ここでは、空白自体を削除していますが、preg_replaceの第二引数の部分を "\\2"などにすればよろしいかと思います。
お礼
ありがとうございます。 <?php $str=" asfda fdas\nx d\nsaf\tdas sdafa "; $out=mbereg_replace('^([^[[:space:]] ]*.*?)[[[:space:]] ]*$','\\1',mbereg_replace('^[[[:space:]] ]*(.*)$','\\1',$str)); echo'|'.$out.'|'; ?> (正規表現中の空白のところは全角の空白) でもできました ご提案の方法は全角非対応の関数を使っていますが大丈夫なのでしょうか? 全角空白が混じっていても動いてはいるようです
お礼
ありがとうございます。 <?php $str='x'; //$str=' str str str'; //$str=' '; echo'|'.mbereg_replace('^[[[:space:]] ]*(.*?)[[[:space:]] ]*$','\\1',$str).'|'; ?> でうまくいくようです。