痔になりやすい生活習慣とは?

<div class="post-image-border">○○○○</div>
をタグ毎削除したいのですが、どうすればよいでしょうか?

$data = preg_replace("#\<div class=\"post-image-border\"\>.*\<\/div\>#","",$data);
とやってみたのですが、うまくいきませんでした

このQ&Aに関連する最新のQ&A

A 回答 (4件)

正規表現におかしい点もありますが、



<?php
$data='AAA<div class="post-image-border">○○○○</div>BBB';

$data = preg_replace("#\<div class=\"post-image-border\"\>.*\<\/div\>#","",$data);

print_r($data);

で、ちゃんとAAABBBと表示されましたよ。あるいは、どう表示されて欲しい?


正規表現でおかしなところ(無意味な\)を直すと、
$data = preg_replace("#<div class=\"post-image-border\">.*</div>#","",$data);
あるいは、
$data = preg_replace("#<div class=\"post-image-border\">.*?</div>#","",$data);
の方がいいでしょうね。
    • good
    • 0
この回答へのお礼

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

>ちゃんとAAABBBと表示されましたよ。あるいは、どう表示されて欲しい?
そうですか…。きっと何か勘違いをしていたんだと思います。もう一度考え直してみます

>正規表現でおかしなところ(無意味な\)を直すと、
ご指摘ありがとうございます。勉強になりましたー

お礼日時:2012/10/16 20:58

PHPはわかりませんが、



$data = preg_replace("#\<div class=\"post-image-border\"\>.*?\<\/div\>#","",$data);

という具合に?が足りないと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
もう一度、よく考えてみますー

お礼日時:2012/10/16 21:00

PHPには「strip_tags」という便利な関数がありますが、


これではダメですか?

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

この回答への補足

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

「HTML および PHP タグ」を取り除きたいわけではなく、
指定「HTMLタグ」で囲まれた任意の文字列を、タグ毎削除したいです

補足日時:2012/10/01 18:38
    • good
    • 0

どう「うまくいかない」の?



「厳密には不可能」というのは理解できてるよね? その上で # の意味は?

この回答への補足

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

どう「うまくいかない」の?
>削除できません

>「厳密には不可能」というのは理解できてるよね?
理解出来てません

> # の意味は?
デリミタ

補足日時:2012/10/01 18:40
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q[正規表現]ある文字からある文字までの間を選択したい。

すいません教えて下さい。
以下のテキストがあります

【test.txt】
----------------------------------
A111A222A
----------------------------------

Aから1つ目のAまでの間を取得したい場合、どのようにしますか?

単純にAからAまでの間とすると
「111A222」が取得されてしまいます、、、orz
「111」を取得するにはどのようにすれば良いでしょうか?

ちなみに、言語は何でもokです。
(私はpythonでやってます)

Aベストアンサー

正規表現なら、次のようにすればできます。

>>> r = re.compile("A([^A]*)") #最初の1文字がAで、2文字目以降はAではない文字
>>> m = r.search('A111A222A')
>>> m.group(0)
'A111'
>>> m.group(1)
'111'

区切り文字が'A'に決まっているなら、正規表現にこだわらず、splitでやった方が早い気はします。

>>> s='A111A222A'
>>> s.split('A')
['', '111', '222', '']

Q正規表現でAND検索はできるのでしょうか

正規表現でAND検索はできるのでしょうか?

現在ASPでデータベースのデータを検索しようとしているのですが,検索エンジンみたいに複数の語をスペースで区切って入力して,データを絞り込んで表示したいのです。

OR検索みたいにそれぞれの語を"|"でつなぐというようなやり方があるのでしょうか?
それとも一つ一つの語で検索を繰り返すという方法しかないのでしょうか?

ご存知の方,ご教授ください。

Aベストアンサー

&&でつながれたらいかがですか?

(?=.*stat)(?=.*ate)はAND検索という意味ではありません。
statedのようにstatとateを重複して含む単語にマッチするという意味です。

普通はこんな回りくどいことはせず、
/stat/ && /ate/
で済ませると思います。
(もしくは単純にループでまわしていくとか)


foo.*bar|bar.*foo
も、2語程度までが限界ですよね。
10語分繋げることを考えると気が遠くなります。
(記述も処理時間も)

言語によってはさらに処理を短縮できるような
特有な構文がありますから、調べてみればよろしいかと思います。

Q?から?までの文字列の削除

配列に
test[0]='●あいうえお*かきく*▲さしすせ*'
test[1]='●あいう*かきく*●さしすせ*'

とあって

●より*を削除したいのですが、
一文字ずつ比較して削除していくしかないのでしょうか?

これとは別の
スマートな方法がありますでしょうか?

Aベストアンサー

●から一番直近の*まで消す場合は、
パターンを
/●.*?\*/g
にします。

Q文字列として"(ダブルコーテーション)を表示させる方法

こんにちは。文字列として、ダブルコーテーションを表示させるには、どうすればよいのか教えてください。m(__)m


例えば、
<font size="2">あいうえお</font>

というタグの「あいうえお」の部分が、セルA1にあった場合、

="<font size="2">"&A1&"</font>"という表示にしたいのです。

"2"のダブルコーテーションも文字列として表示させるには、どうすればよろしいのでしょうか。

教えてください。よろしくお願い致します。

Aベストアンサー

こんにちは~

表示形式は 「標準」 のままで、
ダブルコーテーションを、ダブルコーテーションで囲んでください。

""2""

="<font size=""2"">"&A1&"</font>"

としてみてください。

Q正規表現について(最後にマッチした以降のデータ取得)

以下の文字列から、最後の「\」以降の文字列を取得する方法を
教えていただけますでしょうか。

D:\PROGRAM\ANALYZE\LAN\data0123.dat

この文字列から、「data0123.dat」を取り出したい。
「data0123.dat」の部分は、拡張子含めていろいろ変わります。

よろしくお願いいたします。

Aベストアンサー

もっとスマートな式があるかもしれませんが
my $S = 'D:\PROGRAM\ANALYZE\LAN\data0123.dat';
## 正規表現
$S =~ m/.*\\([^\\]+)$/;
print $1;
ただし、ファイルパスを見るとDOS(Windows)環境のようですので環境はShift-JIS。
全角文字が混ざった場合には正規表現が正常動作する保障がありません。
正規表現の練習なら良いのですがこの程度の処理なら組み込み関数使った処理のほうが効率が良いと思います。
## 組み込み関数
print substr($S,rindex($S,"\\")+1);
ほかにも書き方はあります。

Q正規表現で何文字目から何文字目までのヒット

正規表現で何文字目から何文字目までのヒット

正規表現を使い、何文字目から何文字目までをヒットさせたいです。

例えば、下記の英字があります。

abcdefg

6文字目~7文字目をヒットさせたいです。この場合は、「fg」にヒットさせたいです。
先頭から何文字目までヒットというのならわかるのですが、特定の文字数から文字数まで
ヒットさせたいという場合、どのような正規表現を組めばいいのでしょうか?

Aベストアンサー

抜き出すんじゃなくてマッチさせたいとなると戻り読みですかね・・・肯定戻りも否定戻りも個人的に苦手なんですが

# サクラエディタ(ver 2.0.2.0) + bregonig.dll (ver 2.03)
(?<=^.{5}).{2}

Q正規表現?の置換方法について!(以降削除等)

置換方法についてお詳しい方よろしくお願いいたします。

現在行いたいことは、ある対象とする記述以前、または以降の内容を削除したいと考えております。

具体的には、仮に<div id="hogehoge">とあったとします。

この場合、これ以前の記述を全て削除の置換を行いたいと思っています。
どんな記述があっても、<div id="hogehoge">の記述以前は全削除という置換です。

また、これは以前なのですが、この記述が終わったマーク、こちらも例えばですが<!--//hogehohe-->という記述終了を指定するコメントがあったとします。

その場合、<!--//hogehohe-->以降の記述は全て削除という指定を行いたいと思います。

伝わりますでしょうか。。。

何かを対象にする置換は調べたところ見つかったのですが、対象をもとに以前、以後という指定での置換が分かりません。><

お詳しい方いらっしゃいましたらアドバイスを頂けないでしょうか。

宜しくお願いいたします。

Aベストアンサー

notepad++ で確認
http://notepad-plus-plus.org/

CTRL+H または メニュー/検索/置換 から「置換」のダイアログを開き

検索文字列: ^.+(<div id="hogehoge">)
置換文字列: $1
検索モード: 正規表現
. matches newline: チェックを入れる (ファイル先頭まで削除する場合)
. matches newline: チェックしない (同じ行の頭まで削除する場合)
置換ボタンを押す
にて「以前の記述を全て削除」ができます

検索文字列: (<!--//hogehoge-->).+$
なら「以降の記述は全て削除」です


人気Q&Aランキング