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="搜索?id=wHzIYMmRVDXX2tX1bpuy">

在将它们发送给用户之前,您应该将它们更改为绝对链接。你可以这样做:

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

更好的解决方案是使用 DOMParser 解析来自服务器的响应,并使用 CSS 选择器或 xpath 来查找链接并重写它们的 href 属性。看看DOMCrawler Symfony 组件

于 2012-12-31T09:15:54.237 回答
0

该链接指向您的服务器上显然不存在的文件。您可以编写一些东西来处理对文件的请求(例如,使用 mod_rewrite 重写或 nginx“位置”),或者在将 HTML 发送给用户之前扫描返回的 HTML 代码以查找这些链接并修复它们。

你确定你做的是合法的吗?看起来您正在复制另一个网站的内容并将其作为您自己的内容传递出去。除非网站明确允许,否则您绝对应该这样做。

于 2012-12-31T07:12:26.057 回答