我是一名正在学习Ruby的noob程序员,我决定编写一个SERP检查程序。问题是,我是如此的菜鸟,我不知道如何去做,所以我发现一个在线脚本,它,但它是用PHP编写的。一位朋友帮我理解了它的第一部分,在那里他发现了很多脚本问题。但是,由于我的朋友很忙,他无法帮助我“破译”剧本的第二部分。
我能用Ruby编写,直到$ i = 0,现在我卡住了。我想弄清楚脚本的其余部分是怎么回事。 有这些线条,特别是让我感到困惑,我认为我可以处理其余的事情,但是已经包含了所有内容(在底部),如果我没有提供足够的信息< /强>
$keyword_implode = str_replace(' ','+',$keywords[$i]);
$fetch_url = "http://www.google.com/search?num=50&q=" . $keyword_implode . "&btnG=Search";
ob_start();
include_once($fetch_url);
$page = ob_get_contents();
ob_end_clean();
我在php.net上查看了关于str_replace的一些信息,并且没有一个例子真的像(对我而言)任何一个例子,所以我试图找出他试图用什么代替的东西。
以下是整个脚本:
<?php
if ($_POST['url'] != '') {
if (strpos($_POST['keyword'],"\n")) {
$keywords = str_replace("\n",",",$_POST['keyword']);
$keywords = explode(",",$keywords);
} else {
$keywords[0] = $_POST['keyword'];
}
$keyword_input = $_POST['keyword'];
$url = $_POST['url'];
}
$i = 0;
if ($keywords[$i] != '') {
while ($keywords[$i] != '') {
$keyword_implode = str_replace(' ','+',$keywords[$i]);
$fetch_url = "http://www.google.com/search?num=50&q=" . $keyword_implode . "&btnG=Search";
ob_start();
include_once($fetch_url);
$page = ob_get_contents();
ob_end_clean();
$page = str_replace('<b>','',$page);
$page = str_replace('</b>','',$page);
//preg_match('/008000\">(.+)<\/font><nobr>/i', $page, $match);
preg_match_all('/<font color=#008000>(.*)<\/font>/', $page, $match);
$r = 0;
$position = '0';
while ($match[0][$r] != '') {
if ($position == '0') {
if (strpos($match[0][$r],$url)) {
$position = $r+1;
}
}
$r++;
}
$google_position = $position;
$keyword_table .= '
<tr>
<td>' . $keywords[$i] . '</td>
<td>' . $google_position . '</td>
</tr>';
$i++;
}
$keyword_table = '
<table class="result-table" cellspacing="1">
<tr>
<th>Keyword</th>
<th>Google</th>
</tr>' . $keyword_table . '
</table>';
}
?>
这是我到目前为止用Ruby编写的内容:
require 'sinatra'
require 'rspec'
get '/serp_checker' do
"<form action='/ranked' method='post'>
<label for='keyword'>Keyword</label>
<textarea name='keyword' id='keyword' type='text' /></textarea>
<label for='url'>URL</label>
<input name='url' id='url' type='text' />
<input type='submit' value='Go!' />
</form>"
end
def clean_up_keywords(str)
str.gsub("\n", ",").delete("\r").split(',')
end
def clean_up_list(arr)
arr.reject(&:empty?).each(&:lstrip!)
end
post '/ranked' do
dirty_list = clean_up_keywords(params[:keyword])
clean_list = clean_up_list(dirty_list)
return clean_list.to_s
end
很抱歉这很长,我只是想描述整个问题,所以我不会忘记提供有关问题的重要信息。
答案 0 :(得分:1)
只需查看您在帖子顶部指出的代码部分: