複数ある html ページから、改行部分( <BR> ではなくて )、を自動的に削除して再び保存する、というプログラムを自作しているのですが、\r\n, \r, \n に当てはまらない改行コード? があるみたいで、完全に取りきれないのです。
$input =~ s/\n\r//g;
$input =~ s/\n//g;
$input =~ s/\r//g;
もしくは、
$input =~ s/\x0D\x0A|\x0D|\x0A//g;
という具合にしているのですが、予想では、数行にわたるhtml タグから全ての改行が取り除かれ、一行にまとまると
いうイメージがあるですが、ところどころ改行が残ります。何がいけないのでしょうか・・・
No.5ベストアンサー
- 回答日時:
$input =~ s/\n\r//g;
$input =~ s/\n//g;
$input =~ s/\r//g;
ですが、一行目の\n\rが逆で\r\nだと思うのですが。
$input = s/\r\n|\r|\n//g;
\rと\nだと勘違いしそうなので、
$input = s/\x0D\x0A|\x0D|\x0A//g;
参考URLをご参照ください。
参考URL:http://www.bayashi.net/st/pdmemo/chara.html
あ、逆でしたか? すみません。ご指摘ありがとうございます。
一度は試しているんですが、s/\x0D\x0A|\x0D|\x0A//g;
の方式に戻してみました。
No.8
- 回答日時:
No.5のarukamunです。
$input = s/\r\n|\r|\n//g;
だとサーバのOSによって正常に動作出来ない可能性があります。(\nの解釈の仕方がOSによって違うからです。)
$input = s/\x0D\x0A|\x0D|\x0A//g;
を使えば直接コードを指定しているので、OSに依存しないで正常に動作します。
重ね重ねありがとうございます。
釈然としないままあれこれやってましたが、原因がわかりました!
IEで名前を付けて保存、とやると、いくらご指摘のコードをかましても改行が削除されない状態でPCにダウンされるんですが、FTP経由だと上記の方法でちゃんと削除できているようです。
とりあえず、これで問題はありません。
皆様どうもありがとうございました。
No.7
- 回答日時:
私も最初 No.5 さんや No.6 さんのように思ったのですが、
$input =~ s/\n//g;
$input =~ s/\r//g;
上記二行だけでも全ての改行は取り除かれるハズです。
ところで、
> get 関数などでページを丸々取得して、
というのはどういう事でしょう?
何かのプログラムで HTML を取得してきているという事ですよね?
後、OS は何ですか?
ありがとうございます。
get 関数 で、任意のURLのページを丸々取得できるようです。これも悪意があるといろいろと使えそうですが・・・OSはFreeBSD でした。
No.6
- 回答日時:
NO.5の方
>一行目の\n\rが逆で\r\nだと思うのですが
に同意します。
私が作って実際に稼動している掲示板の
スクリプトを見ると
\r\n
としています。
No.4
- 回答日時:
最近。
プログラムなんて触ってないんで、参考になるかどうかわかりませんけど。$input =~ s/\n\r//g;
$input =~ s/\n//g;
$input =~ s/\r//g;
で、やれば一通り、改行コード外すと思うんですけどね。
っで、改行コードは全部外れてるけど、その結果の1行があまりにも長すぎて、
使用しているエディタが、なんかの弾みで改行しているように表示してるだけ。
とかないですよね?
昔、そーいう事があったような。なかったような。
すいません。
回答しといてなんですけど、これっぽっちも自信がないです。
$input =~ s/\n\r/a\n/g;
$input =~ s/\n/b\n/g;
$input =~ s/\r/c\n/g;
とか、改行コードをチェック付き改行コードにしといて、
これ以外に改行している部分を探してみては?
ありがとうございます。
そうですよね・・・経験者の方はそう考えると思うんです。私もまずその方法で確かめてみました。
エディタが勝手に改行しているケースは考えられないようです。
うー・・・もうちょっと四苦八苦してみます。
No.3
- 回答日時:
こういう場合は一つずつ検証していきましょう。
まず、適当に改行が入ってるテキストなどを自分で作って、それで試してみてください。
問題なく改行は取り除けるでしょうか?
また、少々面倒ですが取り除けない改行(なのか?)のコードを調べてみてください。
秀丸ではなく、Perl で16進数に変換してみましょう。
度々お答えいただいて恐れ入ります。
例えばビルダーとかで作った自作ページは問題なく取れます。
get 関数などでページを丸々取得して、それから改行
コードを取り去ることができないんですね・・・どうも。
アドバイスありがとうございます。
手探りながらご指摘どおりやってみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- その他(プログラミング・Web制作) atcoder python コードへの助言 2 2022/08/12 15:31
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
マクロを使ってフォルダー内に...
-
エクセルで数値を全角文字(カ...
-
WORDで改ページすると時々グレ...
-
EXCELからCSVにすると余計なカ...
-
海外のケータイ(GSM携帯)はハ...
-
CSVの定義
-
エクセルの関数カンマ区切りの...
-
カンマ区切りの数字をCSVフ...
-
何故、日本は未だに数字を3桁...
-
3桁ごと?4桁ごと?コンマの...
-
エクセルの区切り位置の設定方法
-
VB2005のTextBoxでカン...
-
エクセルで電話番号を取り出す...
-
エクセルの1セル内の文字列操作。
-
C#でcsvファイルの列を入れ替え...
-
SUM関数を利用すると自動的に桁...
-
エクセル:桁区切り「カンマ」...
-
電話番号の正規表現
-
【VBA】エクセルで値のみクリッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
マクロを使ってフォルダー内に...
-
カンマ区切りの数字をCSVフ...
-
CSVの定義
-
WORDで改ページすると時々グレ...
-
何故、日本は未だに数字を3桁...
-
データにカンマが入ったCSVデー...
-
3桁ごと?4桁ごと?コンマの...
-
[VBA][Excel]クリップボードか...
-
カンマ区切り
-
VBAでtxtファイルを読み込む際...
-
「カンマ」と「コンマ」は同じ...
-
メモ帳からエクセルにセル区切...
-
パス区切りの文字について
-
EXCELの文字が指数になる
-
C#で、テキストボックスの入力...
-
PHP カンマをエスケープしたい...
-
カンマ区切りでないテキストをc...
おすすめ情報