• ベストアンサー

URL変更

HTTPリクエストを送信するのにホスト名を変更させたいです。 <a href="http://sample1.jp/test.html">test</A> フォームなどからsample2やsample3と入力すと、上記のsample1が それぞれに置き換わるようにするにはどうしたら良いでしょうか?

  • HTML
  • 回答数5
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.5

#1です。 ><div>の外にある3つのリンクは何でしょうか? ご質問文からでは、HTML内の全てのリンクタグを対象にしてよいのか不明でしたので、対象としないものがあることを想定して、指定した<div>内のものだけ置き換える機能としました。<div>外のものは置き換えられないことの確認のために追記したものです。 (どうやら、その必要はなさそうですね。) >sample1→sample2に変更したあと、sample2→sample3は出来るでしょうか? 可能ですが、文字列変換に正規表現を使用していると、入力される文字列に特定の記号が含まれるとエラーを起こす可能性があるので、それを回避しようとすると少々面倒なことになります。 補足を読んでいると、どうやら置き換えたい箇所が決まっているようなので、最初のものを保持しておいて複製を常に表示するというような方法で行えばよろしいかと… 置き換えるのは最初の(ドメイン部分の)「sample1」限定にしています。 正規表現を使ってないので、特殊文字のリスクは少なくなります。 (どうやら、replaceで文字列指定にしてもダメなケースがありそう…) イベントのキャッチは、onblurがよいのかonmouseoutがよいのか…(それぞれ効かないパターンがある)、あるいはonkeyupにしちゃうのか…(レスポンスにタイムラグがある)、イマイチいいのがみつからなかった。 とりあえず、何回でも変更可能な例として… <html> <head> <title></title> <script type="text/javascript"> function chgurl(val){ var trg = document.getElementById('_target'); var org = document.getElementById('target'); if (!trg) { trg = document.createElement('DIV'); trg.setAttribute('id','_target'); trg.innerHTML = org.cloneNode(true).innerHTML; org.parentNode.insertBefore(trg,org); org.style.display = 'none'; } if(val){ trg.innerHTML = org.innerHTML; var i = -1, a = trg.getElementsByTagName('A'); while (a[++i]) a[i].href = a[i].href.replace('sample1',val); } } </script> </head> <body> <input type="text" onmouseout="chgurl(this.value);"> <div id="target"> <a href="http://sample1.jp/one.html">one</A> <a href="http://sample1.jp/two.html">two</A> <a href="http://sample1.jp/three.html">three</A> </div> </body> </html> ><div>内にあるテキストのsample1も変更させる事は出来るでしょうか? 同じような要領でやれば可能です。丁度良い課題になるのでは?

maki12
質問者

お礼

#4でも出来ていましたが、「http://」から最初の/まで置換しているので 変えたくない所まで変わっているのが見つかりました。 この記述で試した所、最初に「sample1」があるところだけ変わってくれるので これで望む事が出来ました。 ありがとうございました。

その他の回答 (4)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.4

yyr446です。 次のようにしました。 ただしテキストボックスに入力する文字列に'.'が含まれると だめです。後は正規表現の使い方で悩んで下さい。 <head> <title></title> <script type="text/javascript"> function chglink(value){ if(value){ var targets =document.getElementsByTagName("A"); for(var i=0;i<targets.length;i++){ var str=targets[i].getAttribute("href"); if(str.match(/^http:\/\/(.*?)\./g)){ target_str = RegExp.$1; targets[i].setAttribute("href",str.replace(target_str,value)); } } } } </script> </head> <body> <input type="ttext" onmouseout="chglink(this.value);"> <a href="http://sample1.jp/one.html">one</A> <a href="http://sample1.jp/two.html">two</A> <a href="http://sample1.jp/three.html">three</A> </body>

maki12
質問者

お礼

(/^http:\/\/(.*?)\./g) 上記を下記で出来ました。 (/^http:\/\/(.*?)\//g)

maki12
質問者

補足

ありがとうございます。 階層が深いと最後の/まで変わってしまうようです。 <a href="http://sample1.jp/ext/etc/two.html">two</A> 最初の/までの間だけというのは出来るのでしょうか?

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

要件に不明確な部分があります。 <選んだだけでジャンプするのではなく置き換えるだけにしたいです。> テキストボックスで入力した値に置き換えるとして (1)テキストボックスの値を変更した場合、さらに置き換えるのですか? 最初AAAと入力すれば"sample1.jp/test.html"が"AAA.jp/test.html" になり、さらにBBBと打ちかえれば"BBB.jp/test.html"としたいのですか? (2)タイミングは? テキストボックス入力に対してリアルタイムに変更するのですか? それとも、ボタンか何かをクリックすれば変更するでよいのですか

maki12
質問者

補足

ありがとうございます。 #2の補足にも書きましたが、(1)はそのようにしたいです。 (2)は(1)が可能ならリアルタイムで行いたいです。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

#1です。 >選んだだけでジャンプするのではなく置き換えるだけにしたいです。 要領の例として挙げたつもりです。そのままの例が見つからなかったというのもありますが… javascript利用だと、オフにしているユーザの場合機能しないということになりますが、それでもよければ。 id:targetの<div>内にあるリンクタグのリンク先のアドレスの単純な置き換えのサンプルです。 「sample1」に一致する部分を<input>タグ部に入力した値に置き換えます。(正しいアドレスかどうかなどのチェックは一切していません) <html> <head></head> <body> <input type="text" id="inp_box" value=""> <button onclick="(function() { var i = -1, v = document.getElementById('inp_box').value; var a = document.getElementById('target').getElementsByTagName('A'); while (a[++i]) a[i].href = a[i].href.replace(/sample1/g,v); })()">入替え</button> <hr> <div id="target"> <a href="http://sample1.jp/one.html">one</a> <a href="http://sample1.jp/two.html">two</a> <a href="http://sample1.jp/three.html">three</a> <a href="http://sample1.jp/sample1.html">test</a> </div> <p> <a href="http://sample1.jp/one.html">one</a> <a href="http://sample1.jp/two.html">two</a> <a href="http://sample1.jp/three.html">three</a> </body> </html>

maki12
質問者

補足

ありがとうございます。 sample1からsample2にボタンひとつで全て変更できました。 <div>の外にある3つのリンクは何でしょうか? ページ内の全てのリンクを<div>内に入れましたが、<div>の外にも同じリンクが必要なのでしょうか? sample1→sample2に変更したあと、sample2→sample3は出来るでしょうか? sample1から変わった後の任意の文字に対して出来ない場合は 一度ページを更新して元のsample1に戻すしかしかないでしょうか? <div>内にあるテキストのsample1も変更させる事は出来るでしょうか?

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

javascriptでしょかねぇ。 セレクトボックスの選択内容に応じてリンクする例。 http://www.tagindex.com/javascript/link/select1.html http://www.interq.or.jp/japan/webhouse/java/tip11_a.html textボックスでも同様に可能ですが、入力値のチェックとかいろいろ必要になると思われます。

maki12
質問者

お礼

<a href="http://sample1.jp/one.html">one</A> <a href="http://sample1.jp/two.html">two</A> <a href="http://sample1.jp/three.html">three</A> 上記のように複数あり、sample1の箇所のみ変更させたいです。

maki12
質問者

補足

ありがとうございます。 選んだだけでジャンプするのではなく置き換えるだけにしたいです。 テキストボックスではどうやるのでしょうか?

関連するQ&A

  • URL変更2

    http://okwave.jp/qa5330543.html 上記の回答5で1つの入力で変更する事はできました。 2つの入力で違う箇所のURLを変えたいです。 X,Yのテキストボックスに入力されたものに、それぞれの初期値の 部分だけ変更させるにはどうしたら良いでしょうか? 1日調べていましたが、進展はありませんでした。 X [ ] 初期値sample8 Y [ ] 初期値test5 <a href="http://sample8.jp/fol/etc_a.html">a</A> <a href="http://test5.jp/fol/etc_b.html">b</A> <a href="http://sample8.jp/fol/etc_c.html">c</A> <a href="http://test5.jp/fol/sample8_d.html">d</A>

  • URL変更2

    http://okwave.jp/qa5330543.html 上記の回答5で希望する事はできたのですが、同じページ内で 違う箇所のURLを別々に変えたいです。 X,Yのテキストボックスに入力されたものに、それぞれの初期値の 部分だけ変更させるにはどうしたら良いでしょうか? X [ ] 初期値sample8 Y [ ] 初期値test5 <a href="http://sample8.jp/fol/etc_a.html">a</A> <a href="http://test5.jp/fol/etc_b.html">b</A> <a href="http://sample8.jp/fol/etc_c.html">c</A> <a href="http://test5.jp/fol/sample8_d.html">d</A>

  • htaccessでURLを変えたい

    htaccessでURLを変えたい http://www.sample.jp/test/php/ex.php というURLをhtaccessで http://www.sample.jp/ex.php に変換したい場合、どのようにすればよいのでしょうか。 いろいろ調べたのですが、動的URLを静的URLに変換等はできたのですが、 上記のように変更するやりかたはわかりませんでした。 上記URLの変換は無理なのでしょうか。

  • テキストエリアに画像URLを貼り付ける入力支援

    簡単なCGI日記を作成してますが、この入力フォームのテキストエリアに手動で画像URLのタグを入れるのが手間なので、 ↓ サーバーにある画像一覧が別窓(違うファイルから)で表示されていて(実際には画像表示ですが・・・) <a href="sample1.gif"><img src="sample1.gif"></a> <a href="sample2.gif"><img src="sample2.gif"></a> <a href="sample2.gif"><img src="sample2.gif"></a> ↓ 画像をクリックするとCGIのテキストエリア内に自動で <a href="sample1.gif"><img src="sample1.gif"></a>とタグを挿入するjavascriptってサンプルになるようなものはないでしょうか?

  • URLの表記変更の強制変更に関して

    URLの表記変更の強制変更に関して どういうバリエーションでURLを入力されても、常に同じスタイルで表記するには、どこで何をすれば良いでしょうか? httpd -v Server version: Apache/2.4.6 (CentOS) 【入力サンプル】 https://www.site.jp/content1/index.html http://www.site.jp/content1/index.html http://www.site.jp/content1/ https://site.jp/content1/index.html http://site.jp/content1/index.html http://site.jp/content1/  ↓ ↓ ↓ 【出力】 https://site.jp/content1/

  • ウィンドウサイズの変更

    <a href="javascript:resizeTo(800,600);location.href='sample.html';">sample</a> で、ウィンドウが800×600に変更されますよね。 この際、同時にツールバーやステータスバーなどを非表示にするにはどうすればよいのでしょうか?

  • インフォシーク翻訳リクエストパラメータを教えてください。(テキスト版とURL版両方)

    それとどうすればここのリクエストパラメータを調べられるのかも教えてください。 送信するとフォームに入力されている状態ではなく、一発で検索結果表示されるリクエストパラメータを教えてください。

  • エクセルVBAにて同行内複数URLの抽出

    別枠で同系統の質問となってしまい申し訳ありません。 http://oshiete1.goo.ne.jp/qa5661746.html 上記でご教授頂いたサンプルを実行しましたところ 順調に動いていたのですが、 以下のように同じ行に複数の取得対象が存在するパターンになると 正常に取得できなくて困っています。 index.html内 <a href="http://www.test.co.jp">テスト1</a><img src="image.gif" alt="イメージ"></a><a href="http://www.test2.co.jp>テスト2</a>|<a href="http://www.test3.co.jp">テスト3</a> このように、同じ行に複数の記述がされている際 最後の物のみ取得してしまい(http://www.test3.co.jpが取得される) 前の物全て取得できない状態です。 全てを取得するようにするにはどのようにすればいいか、 すみませんがよろしくお願いします。 なお、ファイルを読み込んでファイル内容を別シートに出力し、 そこから抽出している形を取っています。

  • HTTPステータス 404 - /servlet/Testについて

    はじめまして。Javaの初心者です。 どうしてもわからないことがあります。それは、 最初にJSPページでHTMLフォームにデータを入力して <input type="submit"/>タグでサーブレットに送信し て、サーブレットでHTMLフォームのデータ を使用して処理を行わせてから再び最初のJSPページ にリクエストを転送(forward)すると、サーブレット での処理結果が表示されるのですが、そのあと再び HTMLフォームにデータを入力して <input type="submit"/>タグでサーブレットに送信す ると、「HTTPステータス 404 -/servlet/Test」などと 表示され、サーブレットが利用可能でなくなります。 なぜなのでしょうか?どのようにしたら解決できるの かどうか教えてください。お願いします。

    • ベストアンサー
    • Java
  • ローカルでは動くがサーバーでは動かない・・・

    メールを配信するCGIがあります。 フォームで登録するようになっているのですが、フォームで登録した際に、御礼のメールを配信したいと思って下記のようなphpを作っています。 フォームから送信されたデータを受け取り、送信者にメールを送った後、別のCGI(perl)にPOST送信するphpを作っています。 ローカルに作ったphp環境では動いたのですが、サーバーにアップロードすると下記のエラーが出て動きませんでした。 エラーメッセージ Warning: main(HTTP/Request.php): failed to open stream: No such file or directory in /home/*****/public_html/cgi/********/mail.php on line 34 メールを送信する部分は特に問題なく動いているみたいで問題はほかのcgiにPOST送信する部分にあるみたいです。初心者なのであるHPに掲載されていたコードをまる写しして必要な部分だけ変更しただけで、あまり意味は分からないままです。 /*POST送信*/ require_once "HTTP/Request.php"; $req =& new HTTP_Request("http://www.***.jp/******/cgi/**********/cgi-bin/*****.cgi"); $req->setMethod(HTTP_REQUEST_METHOD_POST); $req->addPostData("mail", "$mail"); $req->addPostData("md", "*****"); $req->addPostData("id", "**************"); if (!PEAR::isError($req->sendRequest())) { $response1 = $req->getResponseBody(); } else { $response1 = ""; } エラーメッセージにある34行目というのは require_once "HTTP/Request.php"; なのですが、どこに問題があるのでしょうか?

    • 締切済み
    • PHP