我正在建立一个在线西班牙语词典。我从另一个网站合法地获得了定义。对于用户可以搜索的特定单词,出现建议列表。 如果您点击任何建议的字词,系统会弹出错误页面:http://verbum.xtrweb.com/verbumpost.php?word=boedo&word0=hola。如何使列出的单词通过下面粘贴的代码运行:(1)检索定义(2)更改样式。 我知道每个建议的单词(inspect元素)都有一个唯一的URL。如果您将该代码与原始网站的网址参数粘贴在一起,您就会得到我需要的内容:
“http://lema.rae.es/drae/srv/search?id=AVNYdnea1DXX2EH9E2mb”
最多“srv /”属于网站
其余部分来自特定的单词(在这种情况下,第一个建议,“bordar”
过程:
<?php
$words = array('word','word0','word1','word2','word3','word4','word5','word6','word7','word7','word9',
'word10','word11','word12',
'word13','word14','word15');
function url_decode($string){
return urldecode(utf8_decode($string));
}
// we'll use this later on for loading the files.
$baseUrl = 'http://lema.rae.es/drae/srv/search?val=';
// string to replace in the head.
$cssReplace = <<<EOT
<style type="text/css">
//blabla
</style>
</head>
EOT;
// string to remove in the document.
$spanRemove = '<span class="f"><b>.</b></span>';
$styleRemove =
// use for printing out the result ID.
$resultIndex = 0;
// loop through the words we defined above
// load the respective file, and print it out.
foreach($words as $word) {
// check if the request with
// the given word exists. If not,
// continue to the next word
if(!isset($_REQUEST[$word]))
continue;
// load the contents of the base url and requested word.
$contents = file_get_contents($baseUrl . urldecode(utf8_decode($_REQUEST[$word])));
// replace the data defined above.
$contents = str_replace('</head>', $cssReplace, $contents);
$contents = str_replace($spanRemove,"", $contents);
$data = preg_replace('/(search?[\d\w]+)/','http://lema.rae.es/drae/srv/\1', $data);
// print out the result with the result index.
// ++$resultIndex simply returns the value of
// $resultIndex after adding one to it.
echo "<div id='results' style='
//bla bla
}
?>
答案 0 :(得分:1)
我认为我不理解您的问题,但我确实看到您在未初始化的变量上调用preg_replace - $ data。
也许你想要这个呢?
$data = preg_replace('/(search?[\d\w]+)/','http://lema.rae.es/drae/srv/\1', $contents);
就像我说的那样,我并不完全理解你的问题,但我确实认为这是一个潜在的问题。
编辑:
从您的评论中,您似乎想要将被点击的链接的href附加到基本网址并请求该网页的数据。你能用jQuery吗?像这样:
var baseUrl = "http://lema.rae.es/drae/srv/"; // base url
//click function that binds to all anchors within a list item within a ul. in order
//to get more precise, you may need to add some classes or ids
$('ul li a').click(function(){
var src = $(this).prop('href'); //this grabs the href property of the anchor
$(this).find('span').css('propery', 'change to this'); //change css property of span child of this anchor
//or if you want to add a class with styles to the element
$(this).find('span').addClass('class name');
//ajax request to get page data
$.ajax({
type: 'POST',
url: baseUrl+src //appending the query to the base url
}).done(function(data){
//append the returned html to a div, or any element you desire
$('#myelement').append(data);
});
});
希望这会有所帮助。如果您需要任何jQuery帮助,请告诉我。