人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

250ぐらいのhtmlがあります。

このファイルに、バナー広告を差し込みたいと
思っております。


●</div>というタグが13回出現した後に
広告を差し込みたいです。


こんなことが可能な一括テキスト変換ソフト等
ありますでしょうか?


上記が無いようでしたら、
26行目というように行指定で差込が出来るような
ソフトでもOKです。


どうぞよろしくお願いいたします。


●質問者: ohtsu6
●カテゴリ:インターネット ウェブ制作
✍キーワード:HTML ソフト タグ テキスト バナー広告
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● sale-shopping
●0ポイント

(はてなにより削除しました)


2 ● Marine-Blue
●10ポイント

前置き。1番目の回答者やそれと同じ回答をしているユーザーは片っ端から拒否リストに入れておくと良いですよ。


本題。こんなのどうでしょうか。結構手軽で、処理もかなり速かったです。

http://dhive.jp/dhappli/grepreplace.html

◎質問者からの返答

どうもありがとうございます。


3 ● takanii
●10ポイント

uwscというソフトでマクロを作成するとかしないといけないと思います。http://www.uwsc.info/

◎質問者からの返答

どうもありがとうございます。


4 ● rouge_2008
●200ポイント

正規表現を使用できる置換ソフトを使用してはいかがでしょうか?

※正規表現で最短マッチができれば、どのソフトでも可能だと思います。

「Repl-Ace on .NET」では以下の正規表現で可能でした。

http://www.forest.impress.co.jp/lib/sys/file/filesearch/repl_ace...

検索文字列:((?:.*?</div>){13})

置換文字列:$1挿入する広告タグを記述

※「正規表現を使う」「改行(\n)を文字とみなす」にチェックを入れる

※事前に、Step2で検索した対象ファイルの一覧の文字セットを確認してください。

(文字コードを正常に認識できない場合がありますので、Step1で「文字セットを?」のチェックを外して検索を実行した方が良さそうです。

※この場合は、Step2で「他の機能」→「デフォルトの文字セット」および「デフォルトの改行文字」を対象ファイルに合わせて指定して置いてください。)

※文字コードが他のファイルと異なる場合は、一覧のファイルを右クリックで選択してファイルのみ変更できます。


その他、分からない事がある場合はコメントでフォローしますので、出来れば開けて置いてください。

◎質問者からの返答

出来ました。

どうもありがとうございます。

ただ、< /div>が13個無いファイルの処理に

時間がかかるようでした。


5 ● Mook
●800ポイント ベストアンサー

Windows 前提の回答です。違いましたらすいません。


下記を拡張子 ".VBS" にして適当なファイル名で保存します。

挿入する内容を記載したファイルを用意し、ファイルパスを4行目の INSERT_FILE に書きます。

変換対象のHTML ファイルを置いているフォルダ位置を5行目の HTML_FOLDER に書きます。

Option Explicit

'---------------------------------------------------------------------
Const INSERT_FILE = "C:\Data\insert.txt" '--- 挿入するファイル名の指定
Const HTML_FOLDER = "C:\HTMLFiles"  '--- 変換対象ファイルのフォルダを指定
Const KEY_WORD = "</div>"  '--- 検索するタグの指定
Const KEY_COUNT = 13  '--- 検索後の置換して位置
'---------------------------------------------------------------------

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

If fso.FileExists( INSERT_FILE ) = False Then
 WScript.Echo "挿入データファイル【" & INSERT_FILE & "】がありません: "
 WScript.Quit
End If
Dim insData
insData = fso.OpenTextFile( INSERT_FILE ).ReadAll()

Dim fCount
Dim hFile
Dim txtData
Dim pos
'--- 指定フォルダ内の HTML ファイルを処理
For Each hFile In fso.GetFolder( HTML_FOLDER ).Files
  '--- 拡張子のチェック ---
 If UCase( fso.GetExtensionName( hFile ) ) = "HTML" Then
 txtData = fso.OpenTextFile( hFile.Path ).ReadAll()
 pos = getPos( txtData )
 If pos > 0 Then
 If Mid( txtData, pos + 1, 1 ) = Chr(10) Or Mid( txtData, pos + 1, 1 ) = Chr(13) Then
 txtData = Left( txtData, pos ) & vbNewLine & insData & Mid( txtData, pos + 1 )
 Else
 txtData = Left( txtData, pos ) & vbNewLine & insData & vbNewLine & Mid( txtData, pos + 1 )
 End If
  '--- ファイルをバックアップして更新 ---
 fso.CopyFile hFile.Path, hFile.Path & ".bak"  '--- バックアップが不要な場合はこの行を削除
 fso.CreateTextFile( hFile.Path, True ).Write txtData
 fCount = fCount + 1
 Else
  '--- タグが指定回数ない
 WScript.Echo hFile.Name & ":指定回数の " & KEY_WORD & " がありません。"
 End If
 End If
Next
WScript.Echo fCount & " 個のファイルを処理しました。"

'---------------------------------------------------------------------
' 挿入位置の検索
'---------------------------------------------------------------------
Function getPos( txtData )
'---------------------------------------------------------------------
 Dim sPos
 Dim dCount
 sPos= InStr( txtData, KEY_WORD )
 Do While sPos > 0
 dCount = dCount + 1
 If dCount = KEY_COUNT Then
 getPos = sPos + Len( KEY_WORD ) - 1
 Exit Function
 End If
 sPos = InStr( sPos+ 1, txtData, KEY_WORD )
 Loop
End Function

修正・保存したファイルを実行(ダブルクリック)でご希望の処理が実行されないでしょうか。

http://www.whitire.com/vbs/


不明な点はコメントで補足します。

◎質問者からの返答

出来ました。

どうもありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ