0

私はウェブサイトで辞書を作成しています。私は元のサイト(www.rae.es)の用語の定義を呼び出し、それらのcssを自分のものに変更します。コードは次のとおりです。

<?php
    $word = $_REQUEST['word'];


    $url = "http://lema.rae.es/drae/srv/search?val={$word}";

    $css = <<<EOT

    <style type="text/css">
    @font-face {
                font-family: 'brannboll_fetregular';
                src: url('brannbollfet-webfont.eot');
                src: url('brannbollfet-webfont.eot?#iefix') format('embedded-opentype'),
                    url('brannbollfet-webfont.woff') format('woff'),
                    url('brannbollfet-webfont.ttf') format('truetype'),
                    url('brannbollfet-webfont.svg#brannboll_fetregular') format('svg');

                }

    .a
       {
        color: #ffe200;
        margin-top:20px !important;
       }
    .f
       {
         margin-left:20px !important;
         margin-top:10px;
         font-size: 200%;
         color: #ffe200;
         font-family: 'brannboll_fetregular';

       }
    .o
       {
         font-size: 80%;
         color: #ffe200;
         margin-left:10px;
         font-family: 'Belgrano', serif;
        }
    .q {
        margin-left:10px;
        font-family: 'Belgrano', serif;
        }
    .k {
        margin-left:10px;
        font-family: 'Belgrano', serif;
        }
    .p {

        font-family: 'Belgrano', serif;
        }     
    img
        {
        visibility:hidden;
         }

    </style>
    EOT;

    $data = file_get_contents($url);
    $data = str_replace('<head>', $css.'</head>', $data);
    $data = str_replace('<span class="f"><b>.</b></span>', '', $data);
    echo '<div id="result1"
      style="
      top: 77%;
      left: 55%;
      overflow:scroll; 
      width:400px; 
      height:300px;
      border: 1px solid #000000;
      border-radius: 15px;
      background-opacity: 0.5;
      background: #047C8F;
      -webkit-border-radius: 15px;
      -moz-border-radius: 15px;
      box-shadow: inset 0px 3px 13px #000000;
      -moz-box-shadow:
                   0px 3px 13px rgba(000,000,000,0.5),
                   inset 0px 0px 13px rgba(0,0,0,1);
      -webkit-box-shadow:
                   0px 3px 13px rgba(000,000,000,0.5),
                   inset 0px 0px 13px rgba(0,0,0,1);
     ">
     '.$data.' 
     </div>';
        ?> 

さて、時々、いくつかの言葉のために、提案が出てきます。例: http: //lema.rae.es/drae/?val=casa。「casa」を検索すると、3つの提案が表示されます。ここで、自分のサイトでこれらのハイパーリンクをクリックすると、エラーページにリダイレクトされます。だから、私は今、解決策がphpの手にあるので、どこから始めればよいのかわかりません。ありがとう!

4

2 に答える 2

1

http://lema.rae.es/drae/?val=casaから取得した HTML を見ると、提案リンクが相対リンクであることがわかります。

<a href="search?id=wHZIYMmRVDXX2tX1bpuy">

それらをユーザーに送信する前に、それらを絶対リンクに変更する必要があります。次のようなことができます。

<?php $data = preg_replace('/(search?[\d\w]+)/','http://lema.rae.es/drae/srv/\1', $data)

より良い解決策は、DOMParser を使用してサーバーからの応答を解析し、CSS セレクターまたは xpath を使用してリンクを見つけ、それらの href 属性を書き換えることです。DOMCrawler Symfony コンポーネントを見てください。

于 2012-12-31T09:15:54.237 に答える
0

リンクは、明らかにサーバー上に存在しないファイルを指しています。ファイルへのリクエストを処理するものを作成するか(たとえば、mod_rewriterewriteまたはnginx"location"を使用)、返されたHTMLコードをスキャンしてこれらのリンクを探し、HTMLをユーザーに送信する前に修正します。

あなたがしていることが合法であると確信していますか?別のウェブサイトのコンテンツをコピーして、自分のウェブサイトとして渡しているようです。ウェブサイトで明示的に許可されていない限り、絶対にそうすることはできません

于 2012-12-31T07:12:26.057 に答える