No.1
- 回答日時:
blueの後にセミコロンなんてありませんけど。
あと、パターンがあるなら必要ですが、質問にある内容だけ
なら正規表現を使う必要ありませんね。
正規表現は/(?<=<\/span>)(.*?)<br>/isでもいいかもしれませんし。
【test.txt】
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<span class="blue">データ</span>
<br>
<span class="blue">データ</span>
<br>
<span class="blue">データ</span>
<br>
</body>
</html>
【a.php】
<?php
$code = file_get_contents("D:/PHP/test.txt");
echo "元\r\n";
echo $code;
echo "\r\n";
echo "先\r\n";
$match = "/(?<=<\/span>)(.*?)<br>/is";
$replace = "";
$result = preg_replace($match, $replace, $code);
echo $result;
【結果】
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<span class="blue">データ</span>
<br>
<span class="blue">データ</span>
<br>
<span class="blue">データ</span>
<br>
</body>
</html>
先
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<span class="blue">データ</span>
<span class="blue">データ</span>
<span class="blue">データ</span>
</body>
</html>
この回答への補足
回答&コードご提示いただき、ありがとうございます。
質問文に書いていなかったのですが、実は、下記のような状態で、他にもクラスがあり
その内、blueクラスの一行下にある<br>だけど削除したいのですが、
その場合は、どうしたら良いでしょうか?
<span class="★★">データ</span>
<br>
<span class="blue">データ</span>
<br>
後、回答いただいた内容で、「 ?<= 」部分の意味が分からないのですが、
これは、どのような意味なのでしょうか?
No.2ベストアンサー
- 回答日時:
それなら元々作成されていたものがほぼ正解に近いです。
(当然ながら、spanの属性の書き順などには依存しますが)
主な誤りは、セミコロン、$1とするパターン範囲です。
まず、パターンからclass属性内のセミコロンを外しましょう。
$1は、初めに優先、つまり「(」が現れたグループを対象とするので、
今回の質問内容だと、<span class=\"blue;\">(.*?)<\/span>で
マッチした部分になってしまいます。
<span>~</span>の中身を欲しいわけですから、$2とすれば良いです。
また、今回の場合だと、<span>~</span>は全て必要なわけですから、
(<span class=\"blue;\">.*?<\/span>)
とした上で、置換文字は$1とすれば良いです。
(?<=)は肯定戻り読みです。
(?<=)で指定した文字列がマッチする次の文字から、残りのパターンを調べ、
マッチする文字列を取り出します。
肯定戻り読みで指定した部分は取り出し対象になりません。
肯定戻り読みの中では可変文字長の指定はできません。.*とか.{3,}とか。
回答&詳細な解説ありがとうございます。
おかげでうまくいきました!
> (?<=)は肯定戻り読みです
初めて聞きました。これから色々試してみたいと思います。
色々勉強になりましたー
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- JavaScript htmlとcssで分数を表示後、分数の右側に文書を書きたい 1 2022/04/28 10:09
- HTML・CSS 分数が正常に表示されない。 6 2022/05/09 18:53
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
こちらはただの直列処理ですか?
-
PHPでこのコード自体に意味は無...
-
php 入力画面から確認表示画面...
-
PHP8を使うと、大量のWarningが...
-
アップロード画像数でCSSを分け...
-
PHPSpreadsheetを使って関数を...
-
phpでcookieがうまく保存されない
-
ワードプレスサイト PHP8.0.25...
-
入力フォームの空白や改行を制...
-
PHP一覧表示した項目にリンクを...
-
オススメのプログラミングスク...
-
PHPでのパスワード制限のセキュ...
-
htmlのエラーについて(デバッグ)
-
アマゾンのような評価の星を選...
-
SFTPなどは使わないホームペー...
-
ファイルアップロードに関して...
-
Q&Aサイトを作成していてURLの...
-
画像が表示出来ません。
-
phpでPEAR::DBを使っているので...
-
php 確認表示画面で値をSESSION...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpでcookieがうまく保存されない
-
index.phpに入るには、どうすれ...
-
PHP8を使うと、大量のWarningが...
-
PHPSpreadsheetを使って関数を...
-
重複を防ぐ記述について教えて...
-
index.phpって何ですか? 具体...
-
awsにApacheとPHPを入れて、何...
-
phpでPEAR::DBを使っているので...
-
php 確認表示画面で値をSESSION...
-
PHPでユーザー情報を入力して簡...
-
ワードプレスサイト PHP8.0.25...
-
php 完了画面の送信メールのコ...
-
SFTPなどは使わないホームペー...
-
PHPのセッション有効期限について
-
csvファイルについて教えて下さ...
-
PHPとHTML+Xamppの掲示板で画像...
-
PHPで訪問回数を表示するカウン...
-
ファイルアップロードに関して...
-
掲示板を作成しておりアップロ...
-
Q&Aサイトを作成していてURLの...
おすすめ情報