perlを使ってサイト上のhtmlを除去したいのですがその際、altやtitleなど属性の中にある文字列は除去せずにしたのです。
例えば下のようなimgタグがあります。
$str = '<img src="../images/example.png" alt="サンプル画像1" title="サンプル画像2" />テキスト';
これを正規表現をつかって除去し以下のようにテキストだけを取得したいのです。
サンプル画像1サンプル画像2テキスト
以下のような正規表現をつかって通常のhtmlタグは抜けるようになったのですが属性テキストを抜く方法がわかりません。
$str =~ s/<(".*?"|'.*?'|[^'"])*?>//g;
どなた様かご教授の程よろしくお願いいたします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
s///eg でどうにかなりそうな気はするけど....
「『どうしたいのか』が完全な形で出てくるなら『どうすればいいのか』も完全な形で出せるかもしれない」としかいえないなぁ.
No.4
- 回答日時:
No.2 & No.3のお礼欄を拝見しました。
そういった用途であれば、ライブラリを使用したほうが良いかと思います。
例えば↓のHTML::TagParser
http://blog.ryoana.com/entry/2015/09/29/213915
上のサイトは一例ですが、「perl html 解析」「perl スクレイピング」などで検索すれば他にも説明しているサイトがあると思います。
No.3
- 回答日時:
こんな感じですか。
最初のカッコの中が$1に、二番目が$2に、三番目が$3に入ります。
my $str = '<img src="../images/example.png" alt="サンプル画像1" title="サンプル画像2" />テキスト';
$str =~ /<.*?alt="(.*?)".*?title="(.*?)".*?\/>(.*)/;
print "$1$2$3\n"; #→サンプル画像1サンプル画像2テキスト
ありがとうございます。
$str =~ /<.*?alt="(.*?)".*?title="(.*?)".*?\/>(.*)/;
print "$1$2$3\n"; #→サンプル画像1サンプル画像2テキスト
とした場合その<img>タグには有効かと思いますが、サイト上には<a>タグもあり<meta>タグもあります。
1ページ全部のソースからaltやtitleなどの属性、およびテキストを取得したいのです。
今回はわかりやすく省略して質問させていただいたのですがわかりづらく申し訳ございませんでした。
No.2
- 回答日時:
やりたいことはだいたいわかるんだけど, 表現が曖昧なのでプログラムにしにくい.
例えば, #1 への補足で
「altとかtitleとかの属性も含めたテキストをページから抜き出したい」
「srcの画像ファイル名とかは不要」
とあるんだけど, 「テキスト」と「画像ファイル名」とはどう区別すればいい? 腐ったサイトで
<img src="../images/example.png" alt="../images/example.png" title="サンプル画像2" />
なんてあったらどうするの?
あるいは, 「alt や title の値は残す」「src の値はファイル名だから全部捨てる」ということかもしれんが, もしそうだとしたら他の属性はどうすればいい?
ありがとうございます。
>「テキスト」と「画像ファイル名」とはどう区別すればいい?
ややこしくてすみません。
その区別はする必要はないです。とにかくaltとかtitleとかの中は残し、それ以外のタグは取り除きたいです。
>もしそうだとしたら他の属性はどうすればいい?
実を言うと<img>タグの場合はaltとかtitleになりますがその他にも抜き出したい属性はあります。
例えば、<meta name="Description" content="*****">などがあった場合、contentの部分も抜き出したいのです。
ちょっと省略してしまい申し訳ないです。
サイトのソースより日本語テキスト(もちろん英単語なんかも含めますが)を抜き出したいのです。
よろしくお願いいたします。
No.1
- 回答日時:
ちょっと質問.
結果が
サンプル画像1サンプル画像2テキスト
というのは, どういう理由でしょうか? 「altやtitleなど属性の中にある文字列は除去せずに」を正確に実行すると
../images/example.pngサンプル画像1サンプル画像2テキスト
とならなければおかしいのではありませんか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS htmltとcssの連携をして画像縮小について 1 2022/11/15 20:32
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- HTML・CSS 差し込み画像にをcssで大きさ指定したい 1 2022/11/23 23:14
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS PCサイズで赤い画像2つと、青い画像2つがそれぞれ横に2つずつ並んでいるのですが、これをスマホサイズ 5 2022/04/11 12:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイルをディレクトリ分配の...
-
テキストファイルで提出とは?
-
Perlのエラーについてご教授く...
-
perlのrequireの動き方について...
-
Perlでファイルの末尾から指定...
-
TeraPadエディターの操作方法に...
-
Perl 特定のフォルダ以外削除
-
ラズベリーパイ初心者です。 ラ...
-
アルファベットに付いて質問し...
-
perlのプログラミング 部分入れ...
-
画像が表示でnull; this.src
-
Perlで特定文字列から特定文字...
-
INDIRECT 横に再度抽出したい
-
Wallpaper Engineでおすすめの...
-
openした後、closeしないでプロ...
-
Perlでの文字列置換
-
Perlで一定値以上の場合にデー...
-
Perl 複数ファイルの処理 log1....
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
openした後、closeしないでプロ...
-
テキストファイルで提出とは?
-
INDIRECT 横に再度抽出したい
-
Perlで特定文字列から特定文字...
-
perlをバージョンアップしたら...
-
Wallpaper Engineでおすすめの...
-
arduino の割り込み処理について
-
アルファベットに付いて質問し...
-
Strawberry Perl for Windows ...
-
Perlで時間の計算
-
このファイルを開く方法で困っ...
-
TeraPadエディターの操作方法に...
-
cgiでサーバーにファイルを追加...
-
フローチャート 九九
-
LinuxにおいてのPerlのプログラ...
-
perl 初等プログラミングについて
-
Perlのエラーについてご教授く...
-
こんにちは ブラケッツでプログ...
-
bashスクリプト
-
perlプログラミング 空白行削除
おすすめ情報
ご返信ありがとうございます。
目的としては、altとかtitleとかの属性も含めたテキストをページから抜き出したいのです。
なので、srcの画像ファイル名とかは不要なんですね。
よろしくお願いします。