
いつもお世話になっております。
PHP環境にて、ある文字列において、preg_replaceなどを使い正規表現を用いてタグ以外を削除したい場合、どのように記述すれば宜しいのでしょうか。
例えば、
―――――――――――――――――
これは画像です。<img src="http://example.com/img/example.jpg">
これはテキストリンクです。<a href="http://example.com">exampleへのリンク</a>
これは画像リンクです。<a href="http://example.com"><img src="http://example.com/img/example.jpg"></a>
これはYoutubeの埋め込み動画です。<iframe width="420" height="315" src="http://www.youtube.com/embed/EXAMPLE" frameborder="0" allowfullscreen></iframe>
―――――――――――――――――
このような記述があった場合、imgタグ、aタグ、Youtube以外のすべての通常テキストを削除したいのです。
↓タグ以外のテキスト削除後↓
―――――――――――――――――
<img src="http://example.com/img/example.jpg">
<a href="http://example.com">exampleへのリンク</a>
<a href="http://example.com"><img src="http://example.com/img/example.jpg"></a>
<iframe width="420" height="315" src="http://www.youtube.com/embed/EXAMPLE" frameborder="0" allowfullscreen></iframe>
―――――――――――――――――
最初<このカッコ>に囲まれているもの以外を削除しようと思ったのですが、そうするとaタグの間のテキスト(「exampleへのリンク」の部分)も一緒に削除されてしまいました。
こちらを実現するにはどのように行えば良いか、アドバイスいただけますと嬉しいです。
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
マッチするところ以外を削除するなら、マッチしたものをつなげるのが
手早いかもしれません
<?PHP
$html=<<<eof
test<img src="1.jpg">test<img src="2.jpg">test
test<a href="3.htm">test</a>test
test<a href="4.htm"><img src="5.jpg"></a>test
test<a href="6.htm">test<img src="7.jpg">test</a>test<img src="8.jpg">test
test<a href="9.htm"><img src="10.jpg"><img src="11.jpg">test<img src="12.jpg"></a>test
test<iframe src="13.htm" ></iframe>test
eof;
print "<pre>\n";
print htmlspecialchars($html);
print "<hr>\n";
//実作業 ここから
$pattern='/<(a|iframe) .*?>.*?<\/\\1>|<img .*?>/mis';
preg_match_all($pattern,$html,$m);
$html=implode("\n",$m[0]);
//ここまで
print htmlspecialchars($html);
print "</pre>\n";
?>
No.1
- 回答日時:
ちょっと面倒な命題ですが
htmlタグやbodyタグで囲まれてたら、全部残っちゃうのでは?
という素朴な疑問もあります。
もし1行ごとに評価してよいならこんなのでも
$pattern='/.*?(<.*>).*$/m';
$replacement='$1';
$html=preg_replace($pattern,$replacement,$html);
この回答への補足
ありがとうございます。
確かにhtmlやbodyタグがあると全部残ってしまうのですが、今回はそのような事はございません。
上記の例が、一行(改行なし)になっている前提で、全文を対象に一度に削除出来る方法を教えて頂けますと嬉しいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- Perl 画像が表示でnull; this.src 1 2022/04/19 11:31
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【PHP】正規表現でHTMLを置換し...
-
PHP4→5にアップグレードしたら...
-
自動置き換えタグをHTML形式にする
-
php正規表現 相対パス→絶対パス
-
reuterの記事をbeautiful.soup....
-
VBAのコマンドボタンの文字列の...
-
awkで改行を除いて文字列を抜き...
-
jsp 改行コードで改行させて表...
-
、"(ダブルクォーテーション)...
-
JAVA Spring 改行コードを含む...
-
文字の入力で横バー上段、中断...
-
ソースコードの1行が長いとき...
-
Excel関数「COUNTIF」で”文字”...
-
文字化け変換方法
-
ダブルコーテーション(
-
日本語(マルチバイト)でのwor...
-
正規表現で自動リンク後、長いU...
-
ラベル(スタティックテキスト)...
-
メールの1行の文字数制限について
-
メッセージボックスで1025文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseより、タスク・タグの使...
-
echoで画像を呼び出すことがで...
-
Nvuで作成したhtmlをコピペして...
-
PHPでのページ表示について
-
(コード付きです)文章の中か...
-
タグ
-
URLの連続アクセス
-
XSSで、<a><pre>タグだけを有効...
-
J-SH09 でのウェブ表示
-
ペナルティーについて
-
htmlのソースからテーブルの値...
-
クリッカブルマップはネスケで...
-
[正規表現][入れ子]ネストされ...
-
あるタグから対応するタグまで...
-
preg_replace() で特定の文字の...
-
強制ジャンプを中止したいです。
-
phpの定義済み関数
-
タグにはさまれている文字以外...
-
cHTMLのタグはHDMLでは
-
自分でタグ打ちして作ったペー...
おすすめ情報