人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpで”<>”で囲まれた文字列と改行と半角スペースを取り除くやり方を教えてください。

xxxx<yyyyyyy yyyyy>z
zz zz

xxxxzzzzz

に変換するやり方です。

●質問者: kanshizm
●カテゴリ:インターネット ウェブ制作
✍キーワード:ZZ 文字列
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● tobeoscontinue
●20ポイント

preg_replaceを使ってみてはどうでしょう。

<?php

$data = "xxxx<yyyyyyy yyyyy>z\nzz zz";

echo preg_replace("/(<.+>)|\n|\s/", NULL, $data);

?>

タグで囲まれた文字列に何かもっと制限がある場合は.+の部分を変える必要があります。


2 ● mugenkoubou
●20ポイント

こんな感じでどうでしょうか?

$str = 'xxxx<yyyyyyy yyyyy>z
zz zz';

$replaced = preg_replace('/(<([^<>]+)>|[\s])/', '', $str);

3 ● kn1967
●20ポイント

$a に元の文字列が入っていて

$b に置換後の文字列を入れるとすると、

$b = preg_replace("/<.*>|\s|\r|\n/", "", $a);


もしお望みの結果にならなかった場合は

$a に元の文字列が入っていて

$e に置換後の文字列を入れるとすると、

$b = preg_replace("/<.*>/", "", $a);

$c = preg_replace("/\s/", "", $b);

$d = preg_replace("/\r/", "", $c);

$e = preg_replace("/\n/", "", $d);

といった感じで分けてください。


4 ● yoski
●20ポイント

preg_replace('/<[^>]*>|\s/', '', $str);

\s が改行にマッチするか不安なら

echo preg_replace('/<[^>]*>|[\s\r\n\f]/', '', $str);

ですかね。ってもうたくさん回答きてるし・・・

◎質問者からの返答

皆さん、ありがとうございます。

2バイト系文字が入っているからですかね?

うまくいきません。

正確にサンプルを書くと


あ ああ<xxxx>いいい

うう う<yyy>え え

あああいいいうううええ

でしょうか。よろしくお願いします。


5 ● yoski
●20ポイント

文字コードが UTF-8 なら preg_replace でうまく動くと思うんですが…

EUC なら mb_ereg を使うのがいいと思います。

※SJIS や JIS ってことはないですよね。。。

mb_eregi_replace('<[^>]*>|\s', '', $str);

◎質問者からの返答

文字コードはSJIJです。。。。

(^_^.)

↓では何も変化しません。

$utf=mb_convert_encoding($str,"UTF-8","SJIS");

$str2 = preg_replace("/<.*>/", "", $utf);

$sjis=mb_convert_encoding($str2,"SJIS","UTF-8");

print $sjis;


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ