Upplýsingar úr símaskrá
Skrifað af Birkir Rafn Guðjónsson þann 5. október 2008 - 22:14
7 athugasemdir skrifaðar - toppur / botn
Fjöldi lestra: 1116
Leitar að nafni, starfsheiti, heimilisfangi, stað og póstnúmeri eftir símanúmeri.
Skilar svo niðurstöðum í array.

Demo:
## Leitum að jóni jónssyni
$_GET["s"] = '4874754';

## Prentar út þetta:
Array
(
    [0] => Array
        (
            [name] => Jón Jónsson
            [job] => bóndi
            [home] => Prestsbakka
            [zone] => 880 Kirkjubæjarklaustri
            [simi] => 487 4754
        )

    [1] => Array
        (
            [name] => Sigrún Böðvarsdóttir
            [job] =>
            [home] => Prestsbakka
            [zone] => 880 Kirkjubæjarklaustri
            [simi] => 487 4754
        )

)
 1 |
 2 |
 3 |
 4 |
 5 |
 6 |
 7 |
 8 |
 9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
<?php

## Slóð á ja.is 
$url 'http://ja.is/simaskra?q='.$_GET["s"];

## Sækja efni sem upp kemur
$res file_get_contents($url);

## Röð 1 (inniheldur Nafn, starfsheiti, heimilisfang, stað og póstnúmer)
preg_match_all("#<td class\=\"c2\">(.*?)</td>#s"$res$out1);

## Röð 2 (inniheldur símanúmer og gsm)
preg_match_all("#<td class\=\"c3\">(.*?)</td>#s"$res$out2);

## Fyrir hverja röð 1...
foreach($out1[1] as $k => $val)
{
    
## Sækjum nafn og setjum í array sem result $k)
    
preg_match_all("#<strong class\=\"name black\">(.*?)</strong>#s"$val$name);
    
$output[$k]["name"] = utf8_decode($name[1][0]);
    
    
## Sækjum starfsheiti (ef eitthvað) og setjum setm result $k
    
preg_match_all("#<span class\=\"job\">(.*?)</span>#s"$val$job);
    
$output[$k]["job"] = utf8_decode($job[1][0]);

    
## Sækjum heimilisfang og setjum sem result $k
    
preg_match_all("#<em class\=\"home\"><a href\=\"(.*?)\">(.*?)</a></em>#s"$val$home);
    
$output[$k]["home"] = utf8_decode($home[2][0]);

    
## Sækjum stað og póstnúmer o g setjum sem result $k
    
preg_match_all("#<em class\=\"zone\">(.*?)</em>#s"$val$zone);
    
$output[$k]["zone"] = utf8_decode($zone[1][0]);
}

## Fyrir hverja röð 2...
foreach($out2[1] as $k => $val)
{    
    
## Sækjum local símanúmer (ef eitthvað) og setjum sem result $k
    
preg_match_all("#<div class\=\"simi\">(.*?)<em><a href\=\"(.*?)\">(.*?)</a></em>(.*?)</div>#s"$val$simar);
    
## Sækjum  aðeins símanúmer sem byrjar á sömu þrem stöfum og við vildum leita að
    
foreach($simar[3] as $simi)
        if(
substr($simi03) == substr($_GET["s"], 03)) $siminn $simi;
    
    
## Ef ekkert local símanúmer fannst, finnum við gsm númer og gerum það sama
    
if(!$siminn)
    
preg_match_all("#<div class\=\"gsm\">(.*?)<em><a href\=\"(.*?)\">(.*?)</a></em>(.*?)</div>#s"$val$gsm);
    foreach(
$gsm[3] as $gsm)
        if(
substr($gsm03) == substr($_GET["s"], 03)) $siminn $gsm;
        
    
$output[$k]["simi"] = $siminn;
}

## Demo útprentum af því sem upp kemur
print_r($output);

?>



7. október 2008 - 13:49
#1 - Hreinn Sverrisson
Er ekki hægt að gera þetta yfir Iphone

7. október 2008 - 17:44
#2 - Gaui
http://www.gaui.is
Jú, þú setur scriptið á miðlægan vefþjón og keyrir það svo í gegnum iPhone.

18. október 2008 - 01:27
#3 - Hreinn Sverrisson
http://hreinn.net
Ég er að meina bara sem Application, ekki vefsíða sem að maður fer inná

18. október 2008 - 01:39
#4 - Gaui
http://www.gaui.is
Nei, ekki nema þú setjir upp PHP CLI.

31. janúar 2009 - 19:49
#5 - Siggi
Hreinn, þetta er komin fyrir iPhoneinn, checkaðu á Maclantic.com/spjall --> iPhone

18. september 2009 - 13:27
#6 - Birkir Rafn Guðjónsson
http://innsyn.is
Update

$url = 'http://ja.is/hradleit/?q='.$_GET["s"];

## Sækja efni sem upp kemur
$res = file_get_contents($url);

preg_match_all("#<li class=\"vcard\">(.*?)<div class=\"menu\">#s", $res, $tmp);

$vcards = array();

foreach( $tmp[1] as $temp )
{
    /* Fullt nafn */
    preg_match("#<a.*?class=\"fn.*?\".*?>(.*?)<\/a>#s", $temp, $fn);
    if( count( $fn ) == 0 )
        preg_match("#<span.*?class=\"fn.*?\".*?>(.*?)<\/span>#s", $temp, $fn);
    $fn = $fn[1];
   
    /* Heimilisfang */
    preg_match("#<a.*?class=\"street-address.*?\".*?>(.*?)<\/a>#s", $temp, $adr);
    if( count( $adr ) == 0 )
        preg_match("#<span.*?class=\"street-address.*?\".*?>(.*?)<\/span>#s", $temp, $adr);
    $adr = $adr[1];
   
    /* Borg */
    preg_match("#<i.*?class=\"locality.*?\".*?>(.*?)<\/i>#s", $temp, $loc);
    if( count( $loc ) == 0 )
        preg_match("#<span.*?class=\"locality.*?\".*?>(.*?)<\/span>#s", $temp, $loc);
    if( count( $loc ) == 0 )
        preg_match("#<a.*?class=\"locality.*?\".*?>(.*?)<\/a>#s", $temp, $loc);
    $loc = $loc[1];
   
    /* Símanúmer */
    preg_match_all("#<a.*?class=\"tel\".*?>(.*?)<\/a>#s", $temp, $tel);
    $tel = $tel[1];

   
    $vcards[] = array('fn'=>$fn, 'adr'=>$adr, 'loc'=>$loc, 'tel'=>$tel);
}

print_r( $vcards );

22. desember 2009 - 06:40
#7 - Maggi
sNILLDAR update og færslur frá þér Gaui !




Nafn:


Netfang:


Veffang:


Hvað er tólf plús einn?



Skilaboð: