<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 です
よろしくお願いします。
次のような感じでいかがでしょうか?
$text = '<jinriki>I have a <hatena q="1">question</hatena> to ask</jinriki>'; $text = preg_replace('/<.+?>/','',$text); echo $text;
正規表現「<.+?>」で、「<」で始まり「>」で終わる任意の一文字以上の最短マッチになるようにすれば大丈夫です。
※タグの属性値をダブルクォーテンションで囲む場合となっています。
シングルクォーテンションの場合は、変数$textの方をダブルクォーテンションで囲んで指定してください。
次のような感じでいかがでしょうか?
$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 でタグを取り除きたいのですが、
タグを取り除くだけなら 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 でタグを取り除きたいのですが、
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
1 | nzworks | 13回 | 12回 | 0回 | 2010-02-09 03:34:15 |
回答ありがとうございます。
今回は、<jinriki>, </jinriki>, <hatena q="1"> (数字は任意), </hatena> の 4 種類のタグのみを削除したかったのです。
それ以外のタグは残したいと思っています。
質問文が微妙でしたね。
のような文からタグを preg_replace でタグを取り除きたいのですが、
↓
のような文から上記のタグのみを preg_replace でタグを取り除きたいのですが、