• ベストアンサー

ファイルからのタグの検出、文字埋め込みについて

thatsthatの回答

  • thatsthat
  • ベストアンサー率55% (15/27)
回答No.2

行単位処理では難しい事と、/sをつける事と。 要点は完全にかぶってしまいましたが・・・参考までにコードだけ。 s///のパターンはかなり手抜きです(汗 $/=''; $line=<FILE>; $/="\n"; $line=~s#(<A href=\".*?\.html?)(\?(?:(?!cnt=).)*)?(\">.*?</A>)#($2?"$1$2&":"$1?")."cnt=1111$3"#ges; print $line;

vulcan99
質問者

お礼

回答ありがとうございます。 正規表現を利用すると随分簡潔に書けるんですね。 示した頂いたコードを、参考書とにらめっこしながら見させて 頂いて理解することが出来ました。 ありがとうございました。

関連するQ&A

  • 文章中のファイルリンクを置換したい

    文章をjavascriptで読み込み、 以下のような文章のなかに埋まっているファイルリンクの文字を 置換してあげたいのですが、正規表現で表現しきれないでしょうか? ■例: ---以下文章---- あああああ いいいいい \\AAA\BBB\CCC ううううううう \\CCC\DDD\EEE えええええ --------------- とあった時に、下記のようにしたいと考えています。 --------------- あああああ いいいいい <a href="file:////AAA/BBB/CCC">\\AAA\BBB\CCC</a> ううううううう <a href="file:////DDD/EEE/FFF">\\DDD\EEE\FFF</a> えええええ --------------- 今考えている限りだとは\\までを含む文章まではマッチさせて、 リプレースできるのですが、 文章の中の\を/に置き換える方法が思いつきません。 ■私の頭の限界の正規表現だけだと下記までしか思いつきませんでした。 str.replace ( /(\\\\[^ \s\:\*\?\"\<\>\|\#\{\}\%\&\~]+)/gi , <a href=\"file:\/\/$&\">$&<\/a>)> どなたか思いつくことありましたらお知恵をかしていただけないでしょうか。

  • 文字参照「#」を含むURI 正しくない?

    アンカータグなどでCGIへのリンクを指定するとき、 xxx.cgi?param1=aaa&param2=bbb などというURIの場合、そのままHTML内に書くと「&」記号が文法エラーになるので、「&amp;」などに置き換えますよね。 これを、汎用的なモジュールや適当なサブルーチンを使って、記号などを一括で「&#38;」のような文字参照に置き換えています。 ところが、 xxx.cgi?param1=aaa&param2=bbb#name のように(パラメーターではなく)アンカー名が入っていると「#」記号が「&#35;」に置き換えられるのですが、Another HTML-lint でチェックしてみると、この部分が正しくないと警告されてしまいます。 -------------- <A> の HREF 属性の URI 中の実体参照 `&#35;` は使用できない文字 `#` です。 -------------- 単純に、実体参照はデコードしてから評価し、#記号はURIとして認められるように思うのですが、違うのでしょうか。 「#記号はURIとして認められる」という私の認識自体は間違っていないと思うのですが、なぜ実体参照にするとNGなのでしょう。「実体参照はデコードしてから評価」という認識が、間違っていますか? どなたか、ご教授お願いいたします。 (※ 文中の「&」記号が、ここに投稿するとなぜか化けるので全角にしてあります)

    • ベストアンサー
    • HTML
  • <aタグで変数に文字を代入

    JavaScriptをはじめて勉強し始めました。 今、変数のやり取りについて勉強しているのですが、 http://aaabbb.com/aaa/bbb.zip というアドレスがあったとして、 <script type="text/javascript"> <!-- function out(){ var urldata; // --> </script> 上の『urldata』にhttp://aaabbb.com/aaa/bbb.zipを代入したいのです。 でも、タダ代入するだけでなく、 <a href=""></a>で代入したいのです。 つまり、リンクをクリックすると、http://aaabbb.com/aaa/bbb.zipがurldataに代入されるようにしたいのですが・・・ どう書けばいいのかが分かりません。 ためしに書いてみても、全然代入されませんでした。 <a onclick="urldata='http://aaabbb.com/aaa/bbb.zip';out()" href="#">テスト</a> すみませんが、ご教授ください

  • 連番をふり直した後の文字の桁数の調整

    TABLE-A が NO str1 str2 001 aaa AAA 002 bbb BBB ←削除 003 ccc CCC のときに、NO=002を削除後、連番をふり直すために UPDATE TABLE-A SET NO = NO - 1 WHERE NO > 2; というようにしましたが、案の定、003が2となってしまいました。 これを、002とする方法はありますでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • 正規表現で一つ目の区切り文字で区切りたいのですが・・・

    aaa/bbb/ccc/ddd aaa/bbb/ccc/ddd/eee aaa/ccc/ddd $a=~/(.*)\/(.*)/; $1はそれぞれ aaa/bbb/ccc aaa/bbb/ccc/ddd aaa/ccc と成ってしまいます。 このように 「最後の/」で分けられてしまいます。 一つ目の/で分けるにはどうしたらよいでしょうか。

    • ベストアンサー
    • Perl
  • MySQLで同一カラムからのデーターの取り出し方法

    お世話になります。 MySQL5.6使用です。 同一カラムからのデーターの取り出し方法について教えてください。 下記のようなテーブル(tb1)があります。  item  date cnt  aaa  10  100  bbb  10  100  ccc  10  100  aaa  11  90  bbb  11  80  ccc  11  70  aaa  12  60  bbb  12  50  ccc  12  40 date(列)が10の、cnt(列)の抽出は下記でできます。 select item,cnt from tb1 where date=10; <結果>  item  cnt  aaa  100  bbb  100  ccc  100 同じように、date(列)が11の、cnt(列)の抽出は下記でできます。 select item,cnt from tb1 where date=11; <結果>  item  cnt  aaa  90  bbb  80  ccc  70 この二つのコードを同時に行い 1つの表にする方法が知りたいです。 結果として得たい表は下記のとおりです。     cnt(date=10) cnt(date=11)  aaa  100      90  bbb  100      80  ccc  100      70 (※カラム名はasで変更できることは理解しています。) お手数をお掛けしますが、 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 外部パラメータを使用したファイルの作成・書き込み

    テキストファイルに以下の内容が書かれています。 ファイルパス:/aaa/bbb/ccc ファイル名:ファイル.txt これを読み込んで $filepath = /aaa/bbb/ccc $filename = ファイル.txt となっています。 この時(「ファイル.txt」は存在しません。)、以下のような処理を行うと「/aaa/bbb/ccc」ではなく、「/aaa/bbb」に「ファイル.txt」が作成されるのですが、なぜでしょうか?? open(TXT, ">> $filepath/$filename"); flock(TXT, 2); print TXT $header; flock(TXT, 8); close(TXT); この処理の前に$filepathの値を調べましたが、確かに「/aaa/bbb/ccc」となっています。 何か注意する点や、ここが問題では?と言うようなことがあれば教えてください。

    • ベストアンサー
    • Perl
  • jqueryで ディレクトリ(ページ)のハイライト

    <div id="tab"> <div class="tab"><a href="/aaa/aaa/">あああ</a></div> <div class="tab"><a href="/aaa/bbb/">いいい</a></div> <div class="tab"><a href="/aaa/ccc/">ううう</a></div> </div> このようなリンクがあり  例えば現在のページが /aaa/bbb/ を開いている時 <div class="tab"><a href="/aaa/aaa/">あああ</a></div> <div class="tab no_link">いいい</a> <div class="tab"><a href="/aaa/ccc/">ううう</a></div> </div> このようにクラスの追加とリンクを削除(?)するにはどうすればいいのでしょうか? http://www.webopixel.net/javascript/416.html こちらの 「url-parser」を使って現在位置の取得はできるのですが クラスの追加とリンクの削除方法が分からず詰まってしまっています。 よろしくお願いします。

  • 配列に入っている値のソート

    str(1)="bbb" str(2)="aaa" str(3)="ddd" str(4)="eee" str(5)="ccc" という配列があるとします。 これを昇順にソートさせて、 str(1)="aaa" str(2)="bbb" str(3)="ccc" str(4)="ddd" str(5)="eee" とさせたいのですが、どのようにすればよろしいでしょうか?

  • textareaの文章をファイルに書き込む方法

    PHP: 4.4.4です。 <TEXTAREA name="ireru" cols="50" rows="20"></TEXTAREA>に 1.html 2.html 3.html 4.html 5.html ・・・ 20.html と入力し、書き込み形式 1.html\t2.html\t3.html\t4.html\t・・・20.html\t\n 上記の形でlogファイルに書き込みたいのですが、上手くいきません。 (20個以上は書き込めない仕様にしたい) $ireru=htmlspecialchars($_POST['ireru']); $ireru=str_replace("\r\n","\t",$ireru); $ireru=str_replace("\r","\t",$ireru); $ireru=str_replace("\n","\t",$ireru); $ireru=str_replace("\t","",$ireru); $ireru=str_replace(",","\t",$ireru); 改行を\tに置換しているのですが全て\n扱いになってしまいます。 ファイルの内容(5行) $aaa\n $bbb\n $ccc\n $ireru\n (ここに上記の書き込み形式) $ddd・・・ という感じで$***を1行ずつ入れてファイルに書き込みたいのですが、 普通なら5行で済むはずが、24行になってしまいます。 wでfopenしてdata="$aaa\n$bbb\n$ccc\n$ireru\n$ddd\n";でfputsしています。 もうちょっとでいけそうな気がするのですが、もうちょっとが分かりません。置換の設定に問題がありそうな気はするのですが・・・。 ご教授ください。

    • 締切済み
    • PHP