+ Antworten
Ergebnis 1 bis 4 von 4
  1. #1
    Registriert seit
    Dec 2006
    Ort
    Leverkusen
    Beiträge
    613

    Question Ich bekomm es einfach nicht hin ... Please help !

    Hallo Zusammen,

    ich möchte die im Beispiel aufgeführte XML Datei unter der "<number type="home">" die Rufnummer "+493141234567" suchen und als Ergebniss den zugehörigen Wert aus "<firstname>Donald</firstname>" und "<lastname>Duck</lastname>" als Rückgabewert der Funktion bekommen, also in dem Fall -> return "Donald Duck";

    Kommt die Nummer in mehr als einem Eintrag vor -> return "Uneindeutiger Eintrag !";
    Kommt die Nummer in keinem Eintrag vor -> return false;

    Die Funktion sollte den Namen tragen -> function findNumberDB($callerNumber)
    Die zu suchende Nummer wird mit -> "$callerNumber" im Funktionsaufruf übergeben.

    Ich habe mich schon an simplexml() und xpath() gewagt... aber der Syntax ist für mich der "reinste Horror".

    Für eine zündende Idee wäre ich super dankbar ...

    hier eine Beispiel XML Datei:

    HTML-Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <phonebook>
    <comment>Phonebook for JFritz v0.6.2.02</comment>
    <entry private="false">
    	<name>
    		<firstname>Donald</firstname>
    		<lastname>Duck</lastname>
    	</name>
    	<company>Taler AG</company>
    	<address>
    		<street>Taler Weg 1</street>
    		<postcode>51234</postcode>
    		<city>Entenhausen</city>
    	</address>
    	<phonenumbers standard="home">
    		<number type="home">+493141234567</number>
    	</phonenumbers>
    	<internet>
    		<email>donald@duck.de</email>
    	</internet>
    </entry>
    <entry private="false">
    	<name>
    		<firstname>Gustav</firstname>
    		<lastname>Gans</lastname>
    	</name>
    	<company>Taler AG</company>
    	<address>
    		<street>Taler Weg 2</street>
    		<postcode>51234</postcode>
    		<city>Entenhausen</city>
    	</address>
    	<phonenumbers standard="home">
    		<number type="home">+493141234568</number>
    		<number type="home">+4931412345679</number>
    	</phonenumbers>
    	<internet>
    		<email>gustav@gans.de</email>
    	</internet>
    </entry>
    <entry private="true">
    	<name>
    		<firstname>Dasy</firstname>
    		<lastname>Duck</lastname>
    	</name>
    	<company>Taler AG</company>
    	<address>
    		<street>Taler Weg 3</street>
    		<postcode>51234</postcode>
    		<city>Entenhausen</city>
    	</address>
    	<phonenumbers standard="home">
    		<number type="home">+4931412345679</number>
    	</phonenumbers>
    	<internet>
    		<email>dasy@duck.de</email>
    	</internet>
    </entry>
    </phonebook>
    Geändert von obicom (02.02.07 um 01:09 Uhr)
    Viele Grüße, Obi
    ___________________
    PC Ausstattung:

    Asus eee Top 1602 mit ipsymcon V4.x an FMZ 1300 USB

  2. #2
    Registriert seit
    Dec 2006
    Ort
    Leverkusen
    Beiträge
    613

    Lightbulb Keiner Zuhause ? Macht ja nix.....

    So, habe nun den ganzen Tag "rumgefrickelt" und es hinbekommen.
    Ich glaube es zumindest... habe es heute "seperiert" geschrieben.
    Die "results" sehen auch gut aus. Bekomme genau das zurück, was erwartet. Ausser das "return false;" wird mir mit "echo $result;" nicht angezeigt ... aber ist halt "Boolen" und nicht "String". Vielleicht kann trotzdem nochmal einer drüber schauen. Vielleicht hab ich ja noch einen Denkfehler drin oder das Ganze geht viel einfacher (will ja nicht auch noch dumm sterben).

    Wobei ich an so einem "PHP Kampftag" am schnellsten lerne und verstehe ...
    jetzt weiß ich wenigsten was genau in meinem Skript läuft (oder auch nicht läuft).

    Hier meine Lösung:

    PHP-Code:
    function findNumberDB($callerNumber)
    {
    if (
    file_exists('c:\program files\ip-symcon\jfritz.phonebook.xml'))
    {
    $xml simplexml_load_file('c:\program files\ip-symcon\jfritz.phonebook.xml');
    }
    else {
    exit(
    "Konnte Datei nicht laden. ");}
    $count=0;
    $callerNumber substr_replace($callerNumber'+49'01) ;
    foreach (
    $xml->entry as $entry) {
    $nummer $entry->phonenumbers->number ;
    $name $entry->name->firstname." ".$entry->name->lastname ;
    echo 
    $nummer."=".$name."\n";
       if (
    $nummer == $callerNumber) {
       
    $count=$count+;
       
    $treffer=$name ;
       }
    }
    if (
    $count == 1)
    {
    echo 
    "Einträge insg. gefunden: ".$count."\r\n";
    echo 
    $treffer;
    return 
    $treffer;
    }
    elseif (
    $count 1) {
          echo 
    "Mehr als ein Name gefunden.\r\n";
          return 
    "Various Names";
       }
    else {
    echo 
    "Keinen Eintrag gefunden.\r\n";
    return 
    false;
     }
    }
    ?> 
    Geändert von obicom (02.02.07 um 18:32 Uhr) Grund: Hab noch die "0" gegen die "+49" getauscht ...
    Viele Grüße, Obi
    ___________________
    PC Ausstattung:

    Asus eee Top 1602 mit ipsymcon V4.x an FMZ 1300 USB

  3. #3
    Registriert seit
    Dec 2006
    Ort
    Leverkusen
    Beiträge
    613

    Talking So, habs eingebaut und es geht !

    Also die neue Funkktion sucht, statt in der mySQL Datenbank, nun in der Jfritz Phonebook Datei nach der Nummer.

    Dabei ist mir aufgefallen, das die Suche üer "www.dasoertliche.de" nicht funktioniert. Der Funktion werde ich mich die Tage mal widmen ...

    -> function findNumberDE($callerNumber)
    Viele Grüße, Obi
    ___________________
    PC Ausstattung:

    Asus eee Top 1602 mit ipsymcon V4.x an FMZ 1300 USB

  4. #4
    Registriert seit
    Dec 2006
    Ort
    Leverkusen
    Beiträge
    613

    Exclamation Rückwertssuche im AB Skript erneuert

    Hallo,

    wie gestern versprochen, hab ich mich im AB Skript mal der Rückwertssuche gewidmet. Die "alte" Funktion lief nicht mehr, das sich die Seite
    www.dasoertliche.de wohl geändert hat. Hier die überarbeitete Version:

    PHP-Code:
    function findNumberDE($callerNumber)
    {
       
    $url_orig="http://www.telefonauskunft.de/inverseSearch.php?strasse=&newSearch=1&sid=lm996s9alvjlo7f5t7b1g1ngs2&vollstaendig=#TEL#";
       
    $url=str_replace("#TEL#","$callerNumber",$url_orig);
       
    //$ch = curl_init("$url_orig");
       
    $handle=fopen("$url""r");
       if (!
    $handle){
          
    // error cannot open file
          
    echo("ERROR : CANNOT OPEN URL : '$url'\r\n");
       }
       
    $lineNb 0;
       
    $searchTag0 '&Name=';
       
    $searchTag1 '&Vorname=';
       
    $searchTag2 '&Strasse';
       
    $found ;
       while(!
    $found && !feof($handle)) {
          
    $lineNb++;
          
    $buffer fgets($handle);
            if (
    strpos($buffer$searchTag0) !== false) {
            
    // echo "Name gefunden in Zeile: ".$lineNb."\n";
            
    $found ;
            
    $startLN= (strpos($buffer$searchTag0)+6) ;
            
    $endeLN strpos($buffer$searchTag1) ;
            
    // echo $startLN."\n";
            // echo $endeLN."\n";
            
    $Lastname substr($buffer$startLN, ($endeLN-$startLN)) ;
            
    // echo "Lastname=".$Lastname."\n" ;
            
    $startFN= (strpos($buffer$searchTag1)+9) ;
            
    $endeFN strpos($buffer$searchTag2) ;
            
    //echo $startFN."\n";
            // echo $endeFN."\n";
            
    $Firstname substr($buffer$startFN, ($endeFN-$startFN)) ;
            
    // echo "Firstname=".$Firstname."\n" ;
            
    $foundName1 $Firstname." ".$Lastname."\n\r" ;
            
    $foundName1 str_replace('+'' '$foundName1);
            
    // echo $foundName1;
                  
    }
          else {
    $foundName1 "Unbekannt";}
       }
       
    fclose($handle);
       return 
    $foundName1;

    Viel Spaß damit ...
    Viele Grüße, Obi
    ___________________
    PC Ausstattung:

    Asus eee Top 1602 mit ipsymcon V4.x an FMZ 1300 USB