PHP XPath command line graber – for Windows and Linux

Написах скромно скриптче на PHP за прилагане на XPath изрази през командния ред. Скрипта изисква инсталиран Lynx или, ако се ползва под Windows трябва да се постави Lynx в същата директория. Готиното на това програмче е, че не се интересува дали има грешки в страницата.

<?php
if ($argc != 3 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
?>
 
This is a XPath extractor.
 
  REQUIRES:
  "lynx" to be installed!
 
  USAGE:
  <?php echo $argv[0]; ?> <site> <xpath>
 
  EXAMPLE:
  <?php echo $argv[0]; ?> http://site.com/some_page.html "//a[contains(@href,\"?rec\") and not(contains(@href,\"comment\"))]/@href"
  --------------------
 
  With the --help, -help, -h,
  or -? options, you can get this help.
 
<?php
} else {
$site=$argv[1];
function get_cont($url){
$c = `lynx -source $url`;
return $c;
}
$html = get_cont($site);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate($argv[2]);
for ($i = 0; $i < $hrefs->length; $i++) {
	$bb = $hrefs->item($i)->nodeValue;
	print "$bb\n";
}
}
?>

Начин на употреба:

php xpath.php site.com/some_page.html "//a[contains(@href,\"?rec\") and not(contains(@href,\"comment\"))]/@href"

Остава да успея и да го компилирам :). За сега съм пробвал с Bambalam compiler, Roadsend, phc и още няколко по-незнайни емдера и компилатора, но … дърво от всякъде. Все пак, ако си имате инсталиран php и Lynx си работи идеално.
Lynx за Winblowz може да се ползва от тук: Lynx for Windows
Причината да използвам конзолния браузер Lynx е, че много сайтове използват gzip компресия на страниците, за да се зареждат по-бързо. Така не ми се налага да правя еквилибристики от сорта на:

wget -O - somesite.com | gunzip -c

ТОТО 6 от 49 генератор – Javascript generate random unique numbers

Скоро в форума на DBG коментирахме скрипт за генериране на случайни числа за тото 6 от 49. Аз си написах собствен JavaScript генератор, който използва специфични и важни javascript трикове:
1. Генериране на обхват от числа
2. Проверка дали дадено число е част от масив
3. Възходящо сортиране на масив от числа
Ето и кода за тото-генератора:

// Деклариране на минимално и максимално число
var min = 1;
var max = 49;
// Брой на случайно-генерираните числа
var randnums = 6;
/* =================================== */
var nums = [];
var c = 0;
var seqarr =[];
 
function compare(a,b){return a - b}
 
for (var num = min; num <= max; num++){nums.push(num)}
 
do{
	var el = nums[Math.floor(Math.random() * nums.length)];
	if(seqarr.indexOf(el) != -1){continue}
	else {
		seqarr.push(el);
		c++;
	}
}while(c<randnums);
 
document.write(seqarr.sort(compare));

Пример може да се види тук:
JavaScript Random Numbers – ТОТО 6 от 49