我正在制作搜索引擎,其中一项功能就是搜索Google等等。我做的第一件事就是找出如何仅基于URL生成Google搜索。嗯,“http://www.google.com/search?hl=en&source=hp&biw=1542&bih=928&q=”是第一部分,“查询”是第二部分,“&” ; aq = f& aqi = g10& aql =& oq =& qscrl = 1“是第三部分。现在,在客户端我创建了一个名为“搜索”的表单,操作是下面的文件。但是,我试图在服务器端使这个看起来合理的尝试完全失败了。以下是代码:
<?php
$something = $_REQUEST["search"];
$txt1="http://www.google.com/search?hl=en&source=hp&biw=1542&bih=928&q=";
$txt2 = $something;
$txt3="&aq=f&aqi=g10&aql=&oq=&qscrl=1";
$string=$txt1.$txt2."+".$txt3;
$link_to_dig = $string;
$original_file = @file_get_contents($link_to_dig);
if(!$original_file)
die("Error loading {$link_to_dig}");
$path_info = parse_url($link_to_dig);
$base = $path_info['scheme'] . "://" . $path_info['host'];
$stripped_file = strip_tags($original_file, "<a>");
$fixed_file = preg_replace("/<a([^>]*)href=\"\//is", "<a$1href=\"{$base}/", $stripped_file);
$fixed_file = preg_replace("/<a([^>]*)href=\"\?/is", "<a$1href=\"{$link_to_dig}/?", $fixed_file);
preg_match_all("/<a(?:[^>]*)href=\"([^\"]*)\"(?:[^>]*)>(?:[^<]*)<\/a>/is", $fixed_file, $matches);
//DEBUGGING
//$matches[0] now contains the complete A tags; ex: <a href="link">text</a>
//$matches[1] now contains only the HREFs in the A tags; ex: link
$result = print_r($matches, true);
$result = str_replace("<", "<", $result);
print "<pre>" . $result . "</pre>";
?>
感谢您的帮助!
这是表格:
<form class="searchengine" name="search" action="search.php" method="post">
<input type="text" style="width:580px; height:35px; color:#000000;" class="search" name="search" />
</form>
答案 0 :(得分:0)
我假设您对php非常陌生并从某个地方获取此脚本并尝试修改它以适应。
echo - 输出一个或多个字符串 - 不返回任何值。
所以:
$txt2 = echo "$something"
首先关闭它失败,因为没有结束分号。
在屏幕上打印$ something,$ txt被设置为空。
你已经拥有$ something的价值,所以我不知道你为什么要把它改成另一个变量,但是这样做了:
$txt2 = $something;
然后,如果你想让脚本变得更好,那么SO上的大多数人都会指向DOMDocument。