Hallo Uwe,
da das mit dem String recht einfach ist, hab ich das „mal schnell“ umgesetzt.
Anbei mein Scriptentwurf. Wenn du es startest (Execute) siehst du im Fenster darunter die Ausgabe. Ich habe die Felder mit TABs getrennt. Kannst du löschen oder hinzufügen von " " die Tabs verändern. Wenn die Ausgabe für dich ok ist, dann lege im ip-symcon die String-Variabele „Fritzlog“ an und entferne die beiden „//“ vor „SetValueString()“. Gib mal Feedback ob es so ok ist. 
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Anrufliste.ips.php
Trigger : FB_Init Script -> bei Änderungen von -> (string)Var=Fritzbox
Interval : Einmalige Ausführung nach 30 Sekunden verzögerung.
*/
// Jetzt gehts los ....
IPS_SetScriptTimer('Anrufliste_FB',0) ;
if (file_exists('C:\Programme\JFritz\jfritz.calls.xml'))
{
// Ggfs. Pfad anpassen !!!
$xml = simplexml_load_file('C:\Programme\JFritz\jfritz.calls.xml');
}
else {
exit("Konnte Datei nicht laden. ");}
$count=1;
setlocale (LC_ALL, 'German_Germany.1252');
$Fritzlog = strftime('Aktualisiert am %A, den %d.%m.%Y, um %H:%M Uhr');
$Fritzcache = "Zeitpunkt Rufnummer Name auf MSN Calltype
\r" ;
$Fritzlog = $Fritzlog."
\r".$Fritzcache."
" ;
// Ab hier wird die XML Datei (jfritz.calls.xml) zerlegt.
foreach ($xml->entry as $entry) {
// Hier wird die Zeilenanzahl festgelegt.
if ($count == 30)
{
// SetValueString("Fritzlog",$Fritzlog);
echo $Fritzlog ;
return ;
}
$calltype = $entry->attributes() ;
$date = $entry->date ;
$caller = $entry->caller ;
if ($caller == "") {$caller = "Keine Nummer" ;}
$name = findNumberJF($caller) ;
$caller = str_replace ( '+49', '0', $caller) ;
if (($name == "Unbekannt") && ($caller != "Keine Nummer")) {
$name = findNumberDE($caller) ; }
$port = $entry->port ;
$route = $entry->route ;
$duration = $entry->duration ;
// die $route Abfrage filtert z.B. (bei mir) eine Faxnumer aus.
if ((($calltype == "call_in") OR ($calltype == "call_in_failed")) && $route != "24") {
$count = $count+1 ;
// Übersetzung von deutschen Umlauten
$name = str_replace("Ä","Ä",$name) ;
$name = str_replace("ä","ä",$name) ;
$name = str_replace("Ö","Ö",$name) ;
$name = str_replace("ö","ö",$name) ;
$name = str_replace("%F6","ö",$name) ;
$name = str_replace("%FC","ü",$name) ; //neu
$name = str_replace("Ü","Ü",$name) ;
$name = str_replace("ü","ü",$name) ;
$name = str_replace("ß","ß",$name) ;
$Fritzlog = $Fritzlog.$date." ".$caller." ".$name." ".$route." ".$calltype."
";
}
}
// wenn dir die Ausgabe gefällt, einfach die beiden Striche vor GetValue.... entfernen. Vorher die Stringvariablele im ip-symcon anlegen !!
SetValueString("Fritzlog",$Fritzlog);
echo $Fritzlog ;
function findNumberJF($caller)
{
// Ggfs. Pfad anpassen !!!
if (file_exists('C:\Programme\JFritz\jfritz.phonebook.xml'))
{
// Ggfs. Pfad anpassen !!!
$xml = simplexml_load_file('C:\Programme\JFritz\jfritz.phonebook.xml');
}
else {
exit("Konnte Datei nicht laden. ");}
$count=0;
foreach ($xml->entry as $entry) {
$nummer = $entry->phonenumbers->number ;
$name = $entry->name->firstname." ".$entry->name->lastname ;
if ($nummer == $caller) {
$count=$count+1 ;
$treffer=$name ;
}
}
if ($count == 1)
{
if ($treffer == "") {$treffer = "Falscher Eintrag im PB" ;}
return $treffer;
}
elseif ($count > 1) {
// Prüft auf -> "Mehr als einmal im Phonebook?".
return "Various Names";
}
else {
// Keinen Eintrag gefunden.
return "Unbekannt" ;
}
}
function findNumberDE($caller)
{
$url_orig="http://www.telefonauskunft.de/inverseSearch.php?strasse=&newSearch=1&sid=lm996s9alvjlo7f5t7b1g1ngs2&vollstaendig=#TEL#";
$url=str_replace("#TEL#","$caller",$url_orig);
$handle=fopen("$url", "r");
if (!$handle){
// Kann URL nicht öffnen
echo("ERROR : Kann URL nicht öffnen : '$url'
");
}
$lineNb = 0;
$searchTag0 = '&Name=';
$searchTag1 = '&Vorname=';
$searchTag2 = '&Strasse';
$found = 0 ;
while(!$found && !feof($handle)) {
$lineNb++;
$buffer = fgets($handle);
if (strpos($buffer, $searchTag0) !== false) {
$found = 1 ;
$startLN= (strpos($buffer, $searchTag0)+6) ;
$endeLN = strpos($buffer, $searchTag1) ;
$Lastname = substr($buffer, $startLN, ($endeLN-$startLN)) ;
$startFN= (strpos($buffer, $searchTag1)+9) ;
$endeFN = strpos($buffer, $searchTag2) ;
$Firstname = substr($buffer, $startFN, ($endeFN-$startFN)) ;
$foundName1 = $Firstname." ".$Lastname."
\r" ;
$foundName1 = str_replace('+', ' ', $foundName1);
}
else {$foundName1 = "Unbekannt";}
}
fclose($handle);
return $foundName1;
}
?>