PHP初心者です。


下記が動きません。なんででしょう?
やりたいことは、<b>テキスト</b>の除去です。

$str = str_replace("\<b\>テキスト\<\/b\>", "", $str);

簡単な質問で恐縮ですが、御教示ください。

回答の条件
  • 1人2回まで
  • 登録:2008/03/04 05:24:06
  • 終了:2008/03/11 05:25:02

回答(3件)

id:y-kawaz No.1

y-kawaz回答回数1420ベストアンサー獲得回数2252008/03/04 06:02:10

ポイント27pt

バックスラッシュが余計なものです。

<?php
$str = str_replace("<b>テキスト</b>", "", $str);
?>
id:freewriter

なぜかそれだと置換してくれないんです。

で正規表現ってやつかなあと思い、見よう見真似で上記の書き方をした次第です。

2008/03/04 06:16:50
id:y-kawaz No.2

y-kawaz回答回数1420ベストアンサー獲得回数2252008/03/04 06:24:57

ポイント27pt
<?php
$str = "やりたいことは、<b>テキスト</b>の除去です。やりたいことは、<b>テキスト</b>の除去です";
echo str_replace("<b>テキスト</b>", "", $str);
echo preg_replace("|<b>.*?</b>|", "", $str);
?>

上記コードを試してみてください。どちらも正常に動きますよ。

ちなみに2つ目は正規表現を使って を除去しています。

id:freewriter

わかりました!

秀丸で編集してたのですが、エンコードが違っていたようです。。

「閉じて開く」で解決しました。大変失礼しました。

2008/03/04 13:43:45
id:pahoo No.3

pahoo回答回数5960ベストアンサー獲得回数6332008/03/04 07:00:00

ポイント26pt

str_replaceはマルチバイト文字(全角文字など)には対応していませんので、mbシリーズの関数を使い、下記のようにすればよいでしょう。

$str = mb_ereg_replace('<b>テキスト</b>', "", $str);

また、文字エンコードがEUC-JPなら、念のため、下記の指定をしておくとよいでしょう。

mb_internal_encoding('EUC-JP');
mb_regex_encoding('EUC-JP');

参考サイト

id:freewriter

わかりました!

秀丸で編集してたのですが、エンコードが違っていたようです。。

「閉じて開く」で解決しました。大変失礼しました。

2008/03/04 13:43:56
  • id:tukihatu
    えっと、<と>には円マークは必要ないです。
    http://www.turtle.gr.jp/techno/regular-expression.html
    円マークが必要なのは、

    / \ | * + ? [ ] - ^ . $ { } ,

    ぐらいです(最後の三つは場所にもよる気がする)
    あとは場合によってシングルクォートとダブルクォートですね。

    質問文のものだと
    \<b\>テキスト\</b\>
    を検索していることになります。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません