Rychlé hledání ve Firefoxu

Školení, která pořádám

Ve Firefoxu lze k libovolnému vyhledávání snadno přiřadit klíčové slovo, po jehož zadání v příkazovém řádku následovaným hledaným slovem se daná fráze vyhledá. Stačí v kontextovém menu jakéhokoliv formulářového políčka vybrat K vyhledávání přiřadit klíčové slovo a je to. Zkratky se dají editovat i ručně ve vlastnostech záložky, místo hledaného slova se píše %s. Já jsem si takhle např. zkratku _ namapoval na http://www.%s.cz/. K rychlému doplnění předpon a přípon se dají použít i různé kombinace Ctrl+Shift+Enter doplňující .com, .net a .org. Osobně .com moc nepoužívám, tak jsem si to v chrome/browser.jar/content/browser/browser.js změnil na .cz a pro .com používám zkratku -.

Pro Internet Explorer existuje nástroj QuickSearch s podobnou funkcí, jenom pokud vím nedokáže odesílat formuláře metodou POST.

Pokud někdo tuší, jak rychlé hledání zprovoznit spolu s IDOSem, tak to ocením. Se starší verzí jejich aplikace se mi to podařilo, takže např. pro cestu z Luka jsem si vytvořil zkratku luka, ale s novou verzí už se mi to nepodařilo.

Možná si říkáte, jak to všechno souvisí s PHP. Inu, pro nalezení PHP funkce jsem si vytvořil zkratku p a spolu s klávesou F1 v editoru to často používám.

Jakub Vrána, Ze zákulisí, 18.1.2006, diskuse: 20 (nové: 0)

Diskuse

Hondrej:

doplneni .cz ve verzi 1.5 uz funguje (po stisku CTRL ENTER)

Jinak to rychle hledani s IDOSEM, muzes to trosku objasnit? Treba bych vedel...

Multimotyl:

Mám neblahé tušení, že IDOS nějakým způsobem (zřejmě časově omezeným kódem v hidden inputu či jak) hlídá zda je hledání odesláno přímo z jejich formuláře. Zřejmě proto abychom si prohlédli všechny ty reklamy co tam mají.

Často se připojuji přes modem a než se mi celá stránka načte, tak už mám formulář vyplněný a odesílám ho. Stává se pak, že mi to zahlásí "INVALID ENTRY POINT", asi proto, že se ten skrytý prvek ještě ani nenačetl.

Totéž se stává, pokud vyplním formulář několik hodin potom co se načte.

Je to docela velká vada na kráse IDOSu, ale myslím, že konkurenci ani žádnou nemá, takže si to můžou dovolit.

Kalda:

Nevím, zda je to aktuální v nové verzi, ale dříve kontroloval IDOS referery - http://www.pixy.cz/pixylophone/2004_03_archiv.html#1078861597

Nick:

Nemel by byt problem si udelat nekde na netu zvlast stranku a pres fsockopen poslat IDOSu vse, co potrebuje. Neco podobneho jsem potreboval pro rychle zjisteni zpozdeni vlaku (nutne nejdriv navstivit prazdny formular, aby se nastavila cookie). U slovenske verze zpozdeni vlaku se take nejdriv musi nastavit session, data poslat pres POST, pak to teprve vyhodi vysledek. U IDOSu jsem to nezkousel, ale predpokladam, ze by to pro Jakuba nemel byt problem ;-)

mila:

Nedávno jsem se to snažil rozchodit s hledáním v manuálu php (hledání fce). Nějak se mi to nepodařilo, nevíte jak na to?
Aby třeba na "php echo" mi vypadl popis funkce echo.

joe:

pouzit adresu
http://www.php.net/nazev_funkce
tj.
http://www.php.net/echo

lukas:

funguje to pekne i bez www: php.net/echo (coz je myslim uz velice kratke)

firefox ma peknou featuru, ze kdyz text zadany do adresniho radku neni adresa, zobrazi (defaultne) prvni stranku Googlu, takze je nekdy sranda, kdyz se na me nejdriv ostatni divaji jako na lamu, co si mysli, ze kdyz zada do adresniho radku "prijmeni mff", tak mu to vyhodi osobni stranky nebo whois vypis ucitele - jenze ono to funguje.

lukas:

takze vlastne i po zadani "php echo" (bez uvozovek) to vyhodi pravdepodobne php manual k te funkci - pouze vas to ochudi o kontrolu preklepu, kterou ma vyhledavani i 404 na php.net implementovanou.

ikona Jakub Vrána OpenID:

Ve formulářovém poli "search for" na http://www.php.net/ z kontextového menu (po kliknutí pravým tlačítkem) vyber "K vyhledávání přiřadit klíčové slovo a v dialogu ho zadej do políčka "Klíčové slovo".

mila:

To jsem zkoušel, bohužel mi to neběhá.

Dostane mě to na adresu http://cz.php.net/search.php
Ve složce rychlého hledání je ten odkaz jako
http://mirrors.inway.cz/manual-lookup.php?…&lang=cs
Zkoušel jsem tam dát
http://mirrors.inway.cz/manual/cs/function.%s.php
(protože tam se dostanu, když hledám normálně), ale dopadlo to stejně (blbě).

Docela mě to mrzí, protože referenci nějaké funkce hledám každou chvíli.
Když jsem vyděl nadpis tohoto příspěvku, tak jsem se už radoval, že bude můj problém vyřešen. Jsou to tu přeci PHP triky, tak co jiného by se hledalo:)

Bohumír Bednařík:

Zkus se podívat sem:
http://www.chaps.cz/moznost-vyuziti-odkazu-na-idos.htm

Třeba ti to k něčemu bude.

Bohumír Bednařík:

A ještě na doplnění. Parametr pro MHD Praha je tt=e (pozor, rozlišuje se velikost písmen).

Hever:

Takže jsem prozkoušel IDOS a po všemožně komplikovaných pokusech mi *prozatím* funguje ten nejtriviálnější. Nezvedám ruce nad hlavu, přece jenom očekávám, že nějaký škaredý time/sessionstamp mě o tuto radost připraví.

Ten jednoduchý postup byl vyplnit v klasickém formuláři místo odjezdu, odmazat datum a čas a v políčku pro odjezd pravým klikáním přiřadit klíčové slovo.

ikona Jakub Vrána OpenID:

To mi také zezačátku fungovalo, ale po čase přestalo. Navíc názvy některých stanic kolidují, takže bych chtěl pracovat už s vybranou stanicí. A to přestane fungovat v momentě, kdy stanice přečíslují (což už se mi taky stalo).

Hever:

Je tam jeden atribut, který se jednou denně mění - to je ten důvod, proč to přestane fungovat.

Kolidace názvů se bude špatně řešit, ikdyby se někdo vyhecoval k řešení tohoto problému nějakou obezličkou (jak bych na to šel, to vím .. kde na to vzít čas, to nevím).

ikona Jakub Vrána OpenID:

Tak já jsem se tedy napřel:

<?php
if (empty($_GET["from"]) || empty($_GET["to"])) {
?>
<form action="">
Odkud: <input name="from" />
Kam: <input name="to" />
<input type="submit" value="Vyhledat" />
</form>
<?php
} else {
    $root = "http://www.dpp.cz/IDOS/";
    $file = file_get_contents("$root?f=" . urlencode(stripslashes($_GET["from"])) . "&t=" . urlencode(stripslashes($_GET["to"])));
    if (preg_match('~<form[^>]*>(.*)</form>~isU', $file, $matches)) {
        $content = implode("&", form_fields($matches[1], "cmdSearch"));
        $context = stream_context_create(array('http' => array('method' => 'POST', 'content' => $content)));
        echo preg_replace('~<head[^>]*>~i', "\\0\n<base href='$root'>", file_get_contents($root . "connform.aspx", false, $context));
    }
}
?>

Funkce form_fields viz http://php.vrana.cz/automaticke-odesilani-formularu.php.

Hever:

Hezké definitivní řešení. Funkce form_fields toho umí pro tento problém zbytečně hodně. Ale ono je asi lepší dělat obecně fungující funkce, které se budou dát využít i jinde.

Btw. ještě to mělo za účel jednu milou věc .. nainstaloval jsem PHP5 (současně běžící se 4kou na IIS) a poznal jsem pěknou funkci file_get_contents.

bs:

Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration

Takže ještě potřeba dát pozor na nastavení tohoto :-), ale jinak super řešení..

ikona Jakub Vrána OpenID:

Pak se to dá nahradit pomocí fsockopen(). Ale zakazovat allow_url_fopen dohromady k ničemu není, viz http://php.vrana.cz/vkladani-souboru-2.php.

milancb:

Ahoj vsem, mam takovy problem a vubec netusim jak na to... jedna se mi o to, jak u jakehokoliv ciziho formulare na WEBU naplnit automaticky jejich pole s tim, ze udaje (data) bych chtel nacitat z nejakeho meho souboru, po naplneni poli provest Enter/Submit a po zvolenem case napr. x sekund opakovane naplnit dalsimi daty, toto opakovat a opakovat.... Napada neco nekoho... predem dik. M.

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2018 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.