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

php の正規表現について教えてください。

<jinriki>I have a <hatena q="1">question</hatena> to ask</jinriki>
のような文からタグを preg_replace でタグを取り除きたいのですが、うまくいきません。
q="1" の数字の部分は 1 以外の可能性もあります、2 桁以上の可能性もあります。

次のように記述しましたが
preg_replace(array("<jinriki>","</jinriki>","<hatena q=\"[0-9}*\">","</hatena>"),"",$text)
結果は次のようになりました
<>I have a <>question<> to ask</>

preg_quote を使うべきなのでしょうか?
対処法を教えてください。
PHP 5.3.0 です
よろしくお願いします。

●質問者: にぎたま
●カテゴリ:ウェブ制作
✍キーワード:PHP タグ 対処 数字 正規表現
○ 状態 :終了
└ 回答数 : 2/3件

▽最新の回答へ

1 ● rouge_2008
●35ポイント ベストアンサー

次のような感じでいかがでしょうか?

$text = '<jinriki>I have a <hatena q="1">question</hatena> to ask</jinriki>';
$text = preg_replace('/<.+?>/','',$text);
echo $text;

正規表現「<.+?>」で、「<」で始まり「>」で終わる任意の一文字以上の最短マッチになるようにすれば大丈夫です。

※タグの属性値をダブルクォーテンションで囲む場合となっています。

シングルクォーテンションの場合は、変数$textの方をダブルクォーテンションで囲んで指定してください。

◎質問者からの返答

回答ありがとうございます。

今回は、<jinriki>, </jinriki>, <hatena q="1"> (数字は任意), </hatena> の 4 種類のタグのみを削除したかったのです。

それ以外のタグは残したいと思っています。

質問文が微妙でしたね。

のような文からタグを preg_replace でタグを取り除きたいのですが、

のような文から上記のタグのみを preg_replace でタグを取り除きたいのですが、


2 ● y-kawaz
●35ポイント

タグを取り除くだけなら strip_tags という関数があるのでこれを使ったらいかがでしょう?

http://php.net/manual/ja/function.strip-tags.php


正規表現でやる場合は以下で良いと思います。

preg_replace('/<.*?>/s', '', $text);
◎質問者からの返答

回答ありがとうございます。

今回は、<jinriki>, </jinriki>, <hatena q="1"> (数字は任意), </hatena> の 4 種類のタグのみを削除したかったのです。

それ以外のタグは残したいと思っています。

質問文が微妙でしたね。

のような文からタグを preg_replace でタグを取り除きたいのですが、

のような文から上記のタグのみを preg_replace でタグを取り除きたいのですが、

関連質問


●質問をもっと探す●



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