Я нубский программист, который изучает Ruby, и я решил написать тестер 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
Извините, что так долго, я просто хотел описать всю проблему, чтобы не забыть дать важную информацию о проблеме.