Hi,

I started to write an E-Mail Parser so E-Mails from different Internet
Plattforms can be sorted automatically into an customer database.

Everything is working pretty fine, but only if all expected fields
appear in the Mail from the sending plattform.

But sometimes the Mails send out by a plattform doesnt contain all
fields the filter expects. And i dont know how to write the foreach
loop I am using to walk over the current field to check if the start
element of the next needed field occours so the parsing for the needed
element can stop somewhere and start reading the next field element.

A Filter looks like that, at the moment:

Array
(
    [attribute] => Array
        (
            [plattform] => plattform.com
        )

    [firstname] => Array
        (
            [attribute] => Array
                (
                    [read_init] => Name: 
                    [read_from] => Name: 
                    [read_to] =>  
                )

        )

    [name] => Array
        (
            [attribute] => Array
                (
                    [read_init] =>  
                    [read_from] =>  
                    [read_to] => Anschrift: 
                )

        )

    [adress] => Array
        (
            [attribute] => Array
                (
                    [read_init] => Anschrift:
                    [read_from] => Anschrift:
                    [read_to] => ,
                )

        )

    [plz] => Array
        (
            [attribute] => Array
                (
                    [read_init] => ,
                    [read_from] => , 
                    [read_to] =>  
                )

        )

    [city] => Array
        (
            [attribute] => Array
                (
                    [read_init] =>  
                    [read_from] =>  
                    [read_to] => E-Mail:
                )

        )

    [email] => Array
        (
            [attribute] => Array
                (
                    [read_init] => E-Mail: 
                    [read_from] => E-Mail: 
                    [read_to] => Telefon:
                )

        )

    [phone] => Array
        (
            [attribute] => Array
                (
                    [read_init] => Telefon: 
                    [read_from] => Telefon: 
                    [read_to] => Folgender
                )

        )

    [comment1] => Array
        (
            [attribute] => Array
                (
                    [read_init] => ussert:
                    [read_from] => ussert:
                    [read_to] => Kommentar: 
                )

        )

    [comment2] => Array
        (
            [attribute] => Array
                (
                    [read_init] => Kommentar: 
                    [read_from] => Kommentar: 
                    [read_to] => ===
                )

        )

    [headline] => Array
        (
            [attribute] => Array
                (
                    [read_init] => berschrift: 
                    [read_from] => berschrift: 
                    [read_to] => Anzeige 
                )

        )

    [object] => Array
        (
            [attribute] => Array
                (
                    [read_init] => Objekt Nr: 
                    [read_from] => Objekt Nr: 
                    [read_to] => )
                )

        )

)

And the filter funltion looks like that, at the moment:

private function filter_email($message)
    // Filter upcomming email messages into the immetix database
    {
        
        if (is_dir($this -> filter_folder)) {
        
                        if ($filters = opendir($this -> filter_folder)) {
                                
                                while(($filter = readdir($filters)) !== false) {
                                
                                        if ($filter != "." && $filter != "..") {
                                                
                                                $xml = new xml_mm($this -> 
filter_folder.$filter);
                                                
                                                if (!empty($xml -> 
email_filter['attribute']['plattform']) &&
substr_count(strtolower($message), $xml ->
email_filter['attribute']['plattform'])) {
                                                        
                                                        unset($xml -> 
email_filter['attribute']);
                                                        
                                                        foreach($xml -> 
email_filter as $key => $value) {
                                                        
                                                                if ($pos = 
strpos($message, $xml ->
email_filter[$key]['attribute']['read_init'])) {
                                                                                
                                                                        
$message = substr($message, $pos + strlen($xml ->
email_filter[$key]['attribute']['read_from']), strlen($message) - $pos);
                                                                }
                                                                
                                                                $this -> 
element[$key] = trim(substr($message, 0,
strpos($message, $xml -> email_filter[$key]['attribute']['read_to'])));
                                                        }
                                                }
                                        }       
                                }
                                closedir($filters);
                        }       
                }
    }

It would be nice to know how i can iterate over the next elements of the
email filter array till a valid field part is found and the iteration
can start with the next element of the filter, from the last occourance
of a valid read_init string.

Hope i described my problem well enough, otherwise please ask, because
this filter seems to be a pretty cool script, because there is not found
anything similar at google at this time :))

Thanks for your help.

Best Regards,

Sascha Braun

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to