いつもお世話になっております。
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ランキング
-
YouTubeの動画をphpmyadminにin...
-
掲示板を作成しておりアップロ...
-
ファイルアップロードに関して...
-
フォームで戻った際に入力済み...
-
プログラムコードを入力する場...
-
PHP8を使うと、大量のWarningが...
-
PHPのセッション有効期限について
-
PHPSpreadsheetを使って関数を...
-
csvファイルについて教えて下さ...
-
画像ファイルの名前をそのままU...
-
php my adminより取り出したデ...
-
PHPでユーザー情報を入力して簡...
-
PHPSpreadsheetによる書き出し...
-
PHPのエラーの解消法について教...
-
php テーブルが作成できない
-
phpでcookieがうまく保存されない
-
Postgresの特定のカラムからス...
-
PHPの構文で間違えが分からない
-
書籍とその書籍が提供している...
-
ワードプレスサイト PHP8.0.25...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
reuterの記事をbeautiful.soup....
-
変数にHTMLを代入する場合
-
Nvuで作成したhtmlをコピペして...
-
srcに「banner.」で始まるファ...
-
PHPの正規表現でHTMLタグの内容...
-
csobjというタグについて
-
htmlでflashを開く、画面サイズ...
-
[php][正規表現]タグ以外を削除...
-
HTMLファイルの書き換え
-
正規表現でHTMLタグの属性まで...
-
★PHP★フォーム登録時にタグを読...
-
正規表現でタグの置換をしたい...
-
PHP4→5にアップグレードしたら...
-
Strutsでリンクを動的に生成したい
-
正規表現で複数行に渡る範囲を...
-
PHP Webページのタイトルを取得...
-
リッチテキストエディターでの...
-
MP3のコメントタグやSYLTの詳細
-
オリジナルタグをHTMLタグに置...
-
print "<img src=\\"0.jpg\\/>\...
おすすめ情報