Beiträge: 136 
	Themen: 15 
	Registriert seit: 18.01.2007
	
 MyBB-Version: 1.2.12
	 
 
	
	
		Hallo, 
 
ich habe folgendes Problem mit dem Plugin rss2post: 
 
Nachrichten mit langem Betreff werden immer wieder abgerufen. D.h. der Bot ruft diese Nachrichten jedes mal ab. 
 
Gibt es eine Möglichkeit den Betreff automatisch zu kürzen?  
 
Gruß, 
Dirk  niemand eine Idee?
	
	
	
Gruß, 
NixxusMinimax
 
	
	
 
 
	
	
	
		
	Beiträge: 18.383 
	Themen: 257 
	Registriert seit: 09.02.2005
	
	 
 
	
	
		Ich kenne das Plugin kaum. Wie man per PHP Strings kürzst findet du z.B. in diesem Beitrag:  https://www.mybb.de/forum/showthread.php...1#pid30761
	 
	
	
Gruß, 
Michael
 
Support erfolgt NUR im Forum! 
Bitte gelöste Themen als "erledigt" markieren. 
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
 
	
	
 
 
	
	
	
		
	Beiträge: 136 
	Themen: 15 
	Registriert seit: 18.01.2007
	
 MyBB-Version: 1.2.12
	 
 
	
		
		
		13.02.2008, 20:12 
(Dieser Beitrag wurde zuletzt bearbeitet: 13.02.2008, 22:24 von NixxusMinimax.)
		
	 
	
		Ich danke dir schonmal soweit. Hab mal kurz ins Thema reingeguckt. Ich werde nachher mal testen ob ich den Code ins Plugin gebastelt kriege. 
Gruß, 
Dirk
 
/edit:
 PHP-Code: if(my_strlen($lastpost_subject) > 25) 
{ 
    $lastpost_subject = my_substr($lastpost_subject, 0, 25) . "..."; 
}  
 
wärst du wohl so nett mir die Stelle zu zeigen?
 PHP-Code: <?php 
// RSS To Post 
// By DennisTT 
// Version 1.1.0 - Änderungen von Michael (Zeilen 289-307) 
 
// This plugin (C) DennisTT 2006.  You may not redistribute this plugin without the permission from DennisTT. 
 
function rss2post_info() 
{ 
    return array( 
        "name"            => "RSS To Post", 
        "description"    => "Analysiert RSS-Feeds und stellt neue Infos in ein spezifisches Forum.<br />==>> Credits to Vojtech Semecky for RSS parser class.", 
        "website"        => "http://www.dennistt.net", 
        "author"        => "DennisTT", 
        "authorsite"    => "http://www.dennistt.net", 
        "version"        => "1.1.0", 
    ); 
} 
 
/* 
function rss2post_info() 
{ 
    return array( 
        "name"            => "RSS To Post", 
        "description"    => "Parses RSS feeds and posts new items onto a specified forum.<br />==>> Credits to Vojtech Semecky for RSS parser class.", 
        "website"        => "http://www.dennistt.net", 
        "author"        => "DennisTT", 
        "authorsite"    => "http://www.dennistt.net", 
        "version"        => "1.1.0", 
    ); 
} 
*/ 
 
function rss2post_activate() 
{ 
    global $db, $cache; 
    $cache->update('rss2post', 0); 
    $db->query(" 
        CREATE TABLE `".TABLE_PREFIX."rss2post` ( 
            `fid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , 
            `url` VARCHAR( 255 ) NOT NULL , 
            `forum` INT( 10 ) UNSIGNED NOT NULL 
        ) ENGINE = MYISAM ; 
        "); 
 
    $info = rss2post_info(); 
 
    $setting_group_array = array( 
        'name' => str_replace(' ', '_', 'dennistt_'.strtolower($info['name'])), 
        'title' => "$info[name] (DennisTT)", 
        //'description' => "Settings for the $info[name] plugin", 
        'description' => "Einstellungen für das Plugin \"$info[name]\"", 
        'disporder' => 1, 
        'isdefault' => 'no', 
        ); 
    $db->insert_query(TABLE_PREFIX.'settinggroups', $setting_group_array); 
    $group = $db->insert_id(); 
 
/* 
    $setting_group_array = array( 
        'name' => str_replace(' ', '_', 'dennistt_'.strtolower($info['name'])), 
        'title' => "$info[name] (DennisTT)", 
        'description' => "Settings for the $info[name] plugin", 
        'disporder' => 1, 
        'isdefault' => 'no', 
        ); 
    $db->insert_query(TABLE_PREFIX.'settinggroups', $setting_group_array); 
    $group = $db->insert_id(); 
*/ 
 
    $settings = array( 
        'rss2post_auto' => array('Automatischer Scan?', 'Wenn \"Ja\" gewählt ist, werden die RSS-Feeds nach einer bestimmten Zeit neu gescannt.<br />Wenn \"Nein\" gewählt ist, werden die RSS-Feeds nur manuell über das Plugin-CP neu eingelesen.', 'yesno', 'yes'), 
        'rss2post_userid' => array('Benutzer-ID', 'ID des Benutzers, der als Autor erwänt wird.', 'text', '1'), 
        'rss2post_interval' => array('Time-Out-Intervall', 'Intervall zwischen den Scans in Minuten', 'text', '90'), 
        'rss2post_striphtml' => array('Strip HTML', 'Soll der Feed-Inhalt aufgelöst werden, wenn er HTML-Code enthält?', 'yesno', 'yes'), 
        'rss2post_forcerunpw' => array('Force Run Password', 'Dies ist das Passwort, das via URL jedes Mal hinzugefügt wird, wenn das Plugin "forced-run" ausgeführt wird. (siehe auch "RSS To Post - Konfigurationshinweise" für weitere Informationen über "force-run")', 'text', rand(100, 999)), 
        ); 
 
    $i = 1; 
    foreach($settings as $name => $sinfo) 
    { 
        $db->query("INSERT INTO ".TABLE_PREFIX."settings (name,title,description,optionscode,value,gid,disporder) VALUES ('$name', '$sinfo[0]', '$sinfo[1]', '$sinfo[2]', '$sinfo[3]', $group, $i)"); 
        $i++; 
    } 
    rebuildsettings(); 
 
    echo '<script type="text/javascript">parent.nav.location.href = parent.nav.location.href;</script>'; 
 
} 
 
function rss2post_deactivate() 
{ 
    global $db; 
 
    $info = rss2post_info(); 
 
    $result = $db->query("SELECT gid FROM ".TABLE_PREFIX."settinggroups WHERE title = '$info[name] (DennisTT)' LIMIT 1"); 
    $group = $db->fetch_array($result); 
     
    if(!empty($group['gid'])) 
    { 
        $db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE gid = $group[gid] LIMIT 1"); 
        $db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE gid = $group[gid]"); 
        rebuildsettings(); 
    } 
 
    $db->query("DROP TABLE ".TABLE_PREFIX."rss2post"); 
    $db->delete_query(TABLE_PREFIX."datacache", "title='rss2post'"); 
 
    echo '<script type="text/javascript">parent.nav.location.href = parent.nav.location.href;</script>'; 
 
} 
 
$plugins->add_hook("admin_index_navigation_end", "rss2post_admin_menu"); 
function rss2post_admin_menu() 
{ 
    global $menu, $lang; 
    $menu[] = array( 
        "title" => "RSS To Post", 
        "items" => array( 
            10 => array("title" => $lang->nav_manage, "url" => "index.php?".SID."&plugin=rss2post&pluginaction=list"), 
        ) 
    ); 
} 
 
$plugins->add_hook("admin_index_start", "rss2post_admin"); 
function rss2post_admin() 
{ 
    global $mybb, $db, $lang; 
    if(isset($mybb->input['plugin']) && $mybb->input['plugin'] == 'rss2post') 
    { 
        addacpnav("RSS To Post", "index.php?".SID."&plugin=rss2post&pluginaction=list"); 
        $action = (isset($mybb->input['pluginaction'])) ? $mybb->input['pluginaction'] : 'list'; 
        if($action == 'do_update') 
        { 
            // Update existing feed info 
            if(is_array($mybb->input['url'])) 
            { 
                foreach($mybb->input['url'] as $fid => $url) 
                { 
                    // Delete if requested 
                    if(isset($mybb->input['delete'][$fid]) && $mybb->input['delete'][$fid] == 'true') 
                    { 
                        $db->delete_query(TABLE_PREFIX."rss2post", "fid='{$fid}'", 1); 
                        continue; 
                    } 
 
                    // Validate variables 
                    $forum = intval($mybb->input['forum'][$fid]); 
                    $query = $db->simple_select(TABLE_PREFIX."forums", "fid", "type='f' AND fid='{$forum}'"); 
                    if($db->num_rows($query) == 0) 
                    { 
                        cperror("One of the forum IDs you have provided is invalid.  Please go back and correct it."); 
                    } 
                    $update_array = array( 
                        'url' => $db->escape_string($url), 
                        'forum' => $forum 
                        ); 
                    $db->update_query(TABLE_PREFIX."rss2post", $update_array, "fid='{$fid}'"); 
                    if(isset($mybb->input['run'][$fid]) && $mybb->input['run'][$fid] == 'true') 
                    { 
                        rss2post_process_feed($url, $forum); 
                    } 
                } 
            } 
            if(!empty($mybb->input['newurl'])) 
            { 
                $forum = intval($mybb->input['newforum']); 
                $query = $db->simple_select(TABLE_PREFIX."forums", "fid", "type='f' AND fid='{$forum}'"); 
                if($db->num_rows($query) == 0) 
                { 
                    cperror("One of the forum IDs you have provided is invalid.  Please go back and correct it."); 
                } 
                $insert_array = array( 
                    'url' => $db->escape_string($mybb->input['newurl']), 
                    'forum' => $forum 
                    ); 
                $db->insert_query(TABLE_PREFIX."rss2post", $insert_array); 
                if(isset($mybb->input['newrun']) && $mybb->input['newrun'] == 'true') 
                { 
                    rss2post_process_feed($mybb->input['newurl'], $forum); 
                } 
            } 
            cpredirect("index.php?".SID."&plugin=rss2post&pluginaction=list", "Die \"RSS To Post\"-Informationen wurden erfolgreich aktualiesiert."); 
            die(); 
        } 
        cpheader(); 
 
        starttable(); 
 
        startform("index.php"); 
        makehiddencode('plugin', 'rss2post'); 
        makehiddencode('pluginaction', 'do_update'); 
 
        tableheader('RSS To Post - Configuration', '', 4); 
 
        tablesubheader(array('URL', 'Forum-ID', 'Löschen', 'Ausführen')); 
        $query = $db->simple_select(TABLE_PREFIX."rss2post", "*"); 
        if($db->num_rows($query) > 0) 
        { 
            while($row = $db->fetch_array($query)) 
            { 
                $bg = getaltbg(); 
                echo '<tr>'; 
                echo "\n<td class=\"{$bg}\" style=\"width:70%\"><input type=\"text\" name=\"url[{$row['fid']}]\" value=\"".htmlspecialchars_uni($row['url'])."\" style=\"width:100%\" /></td>"; 
                echo "\n<td class=\"{$bg}\" style=\"width:10%\"><input type=\"text\" name=\"forum[{$row['fid']}]\" value=\"".htmlspecialchars_uni($row['forum'])."\" style=\"width:100%\" /></td>"; 
                echo "\n<td class=\"{$bg}\" style=\"width:10%; text-align:center\"><input type=\"checkbox\" name=\"delete[{$row['fid']}]\" value=\"true\" /></td>"; 
                echo "\n<td class=\"{$bg}\" style=\"width:10%; text-align:center\"><input type=\"checkbox\" name=\"run[{$row['fid']}]\" value=\"true\" /></td>"; 
                echo '</tr>'; 
            } 
        } 
        else 
        { 
            echo '<tr><td colspan="4" class="trow1">No RSS feeds to display</td></tr>'; 
        } 
 
        tablesubheader('Neuer RSS-Feed', '', 4); 
        $bg = getaltbg(); 
        echo '<tr>'; 
        echo "\n<td class=\"{$bg}\" style=\"width:70%\"><input type=\"text\" name=\"newurl\" value=\"\" style=\"width:100%\" /></td>"; 
        echo "\n<td class=\"{$bg}\" style=\"width:10%\"><input type=\"text\" name=\"newforum\" value=\"\" style=\"width:100%\" /></td>"; 
        echo "\n<td class=\"{$bg}\" style=\"width:10%; text-align:center\"></td>"; 
        echo "\n<td class=\"{$bg}\" style=\"width:10%; text-align:center\"><input type=\"checkbox\" name=\"newrun\" value=\"true\" checked=\"checked\" /></td>"; 
        echo '</tr>'; 
 
        endtable(); 
 
        endform("RSS To Post-Konfiguration aktualisieren", $lang->reset_button); 
 
        echo "<h3>Zusätzliche Plugin-Info:</h3><p><strong>Force Run:</strong> Wenn die Möglichkeit für \"cronjobs\" auf dem Server besteht, kannst du einen \"cronjob\" einrichten, der<br /><br />                                      <a href=\"{$mybb->settings['bburl']}/index.php?forcerss2post&rsspw={$mybb->settings['rss2post_forcerunpw']}\">{$mybb->settings['bburl']}/index.php?forcerss2post&rsspw={$mybb->settings['rss2post_forcerunpw']}</a><br /><br />im angegebenen Intervall ausführt. Alternativ kannst du diese URL verwenden, um das Plugin manuell auszuführen.</p>"; 
        //echo "<h3>Additional Plugin Info:</h3><p><strong>Force Run:</strong> If you have access to create cronjobs on your server, you can create a cronjob that runs <a href=\"{$mybb->settings['bburl']}/index.php?forcerss2post&rsspw={$mybb->settings['rss2post_forcerunpw']}\">{$mybb->settings['bburl']}/index.php?forcerss2post&rsspw={$mybb->settings['rss2post_forcerunpw']}</a> at the interval of your choice.  Alternatively you can use this URL to run the plugin manually whenever you choose.</p>"; 
        rss2post_cpfooter(); 
        die(); 
    } 
} 
 
$plugins->add_hook("global_end", "rss2post_run"); 
function rss2post_run() 
{ 
    global $cache, $mybb, $db; 
 
    // Quit if automatic mode is not turned on and run isn't being forced 
    if($mybb->settings['rss2post_auto'] == 'no' && !isset($mybb->input['forcerss2post'])) 
    { 
        return; 
    } 
 
    // If the run isn't forced, or the password is not correct, check timeout interval 
    if(!isset($mybb->input['forcerss2post']) || $mybb->input['rsspw'] != $mybb->settings['rss2post_forcerunpw']) 
    { 
        $minutes_before_next_run = $mybb->settings['rss2post_interval']; // Minutes to wait before allowing another run. 
     
        $last_run = $cache->read('rss2post'); 
        if($last_run > (time() - $minutes_before_next_run*60)) 
        { 
            return; 
        } 
    } 
 
    // Clear error data cache 
    $cache->update('rss2post_errors', ''); 
 
    // Find out what feeds there are to update. 
    $query = $db->simple_select(TABLE_PREFIX."rss2post"); 
    while($row = $db->fetch_array($query)) 
    { 
        rss2post_process_feed($row['url'], $row['forum']); 
    } 
    $cache->update('rss2post', time()); 
} 
 
function rss2post_process_feed($url, $forum) 
{ 
    global $db, $mybb, $cache; 
 
    // Create feed reader 
    $feeder = new lastRSS; 
    $feeder->CDATA = 'content'; 
 
    $uid = intval($mybb->settings['rss2post_userid']); 
 
    $query = $db->simple_select(TABLE_PREFIX."users", "username", "uid='{$uid}'"); 
    $user = $db->fetch_array($query); 
 
    // Get the feed 
    if($feed = $feeder->Get($url)) 
    { 
        $items = $feed['items']; 
        // Loop through each item 
        foreach($items as $item_data) 
        { 
            // Make a title if none exists 
            if(empty($item_data['title'])) 
            { 
                $item_data['title'] = substr($item_data['description'], 0, 60); 
                if(strlen($item_data['description']) > 60) 
                { 
                    $item_data['title'] .= '...'; 
                } 
            } 
/*            // See if title exists in posting forum 
            $subject = html_entity_decode($item_data['title']); 
            $subject_sql = $db->escape_string($subject); 
            $query = $db->simple_select(TABLE_PREFIX."threads", "tid", "subject='{$subject_sql}' AND fid='{$forum}'"); 
            if($db->num_rows($query) == 0) 
            { 
                // Add thread to forum (code based on MyBB 1.2.1 newthread.php) 
                // Set up posthandler. 
                require_once MYBB_ROOT."inc/datahandlers/post.php"; 
                $posthandler = new PostDataHandler("insert"); 
                $posthandler->action = "thread"; 
 
 
                $message = html_entity_decode($item_data['description']); 
*/ 
            // See if title exists in posting forum 
         $filetype = ".".array_pop(explode(".", $url)); 
            if($filetype == "xml") { 
                utf8_encode($subject); 
            } 
            $subject = html_entity_decode($item_data['title']); 
            $subject_sql = $db->escape_string($subject); 
            $query = $db->simple_select(TABLE_PREFIX."threads", "tid", "subject='{$subject_sql}' AND fid='{$forum}'"); 
            if($db->num_rows($query) == 0) 
            { 
                // Add thread to forum (code based on MyBB 1.2.1 newthread.php) 
                // Set up posthandler. 
                require_once MYBB_ROOT."inc/datahandlers/post.php"; 
                $posthandler = new PostDataHandler("insert"); 
                $posthandler->action = "thread"; 
 
                if($filetype == "xml") { 
                    utf8_encode($item_data['description']); 
                } 
                $message = html_entity_decode($item_data['description']); 
                $meta_info = ''; 
 
                if(!empty($item_data['link'])) 
                { 
                    $meta_info .= ''.$item_data['link']; 
                } 
                if(!empty($meta_info)) 
                { 
                    $message .= "\n\nQuelle: ".$meta_info; 
                } 
                if(!empty($item_data['author'])) 
                { 
                    $message .= "\nAuthor: {$item_data['author']}"; 
                } 
                if(!empty($item_data['comments'])) 
                { 
                    $message .= "\nComments: {$item_data['comments']}"; 
                } 
 
                // Strip HTML tags if required 
                if($mybb->settings['rss2post_striphtml'] == 'yes') 
                { 
                    $message = strip_tags($message); 
                } 
 
                // Set the thread data 
                $new_thread = array( 
                    "fid" => $forum, 
                    "subject" => $subject, 
                    if(my_strlen($subject) > 25) 
          { 
          $subject = my_substr($lastpost_subject, 0, 25) . "..."; 
          }  
                    "icon" => -1, 
                    "uid" => $uid, 
                    "username" => $user['username'], 
                    "message" => $message, 
                    "ipaddress" => '127.0.0.1', 
                    "posthash" => '', 
                    "savedraft" => 0, 
                ); 
 
                // Set up the thread options 
                $new_thread['options'] = array( 
                    "signature" => 'yes', 
                    "emailnotify" => 'no', 
                    "disablesmilies" => 'no' 
                ); 
 
                $posthandler->set_data($new_thread); 
         
                // Now let the post handler do all the hard work. 
                if($posthandler->validate_thread()) 
                { 
                    $thread_info = $posthandler->insert_thread(); 
                } 
                else 
                { 
                    $errors = $cache->read("rss2post_errors");     
                    if($errors === false) 
                    { 
                        $errors = ''; 
                    }                     
                     
                    $errors .= 'Date: ' . gmdate('r') . "\n"; 
                    $errors .= "URL: {$url}\n"; 
                    $errors .= "Forum ID: {$forum}\n"; 
                     
                    ob_start(); 
                    var_dump($item_data); 
                    $errors .= ob_get_clean(); 
                     
                    $datahandler_errors = $posthandler->get_errors(); 
                    ob_start(); 
                    var_dump($datahandler_errors); 
                    $errors .= ob_get_clean(); 
                    $errors .= "\n\n===========================================\n\n"; 
                     
                    $cache->update('rss2post_errors', $errors); 
                } 
            } 
        } 
    } 
    else 
    { 
        $errors = $cache->read("rss2post_errors");     
        if($errors === false) 
        { 
            $errors = ''; 
        }                     
         
        $errors .= 'Date: ' . gmdate('r') . "\n"; 
        $errors .= "URL: {$url}\n"; 
        $errors .= "Forum ID: {$forum}\n"; 
         
        $errors .= "There was a problem accessing the URL."; 
        $errors .= "\n\n===========================================\n\n"; 
         
        $cache->update('rss2post_errors', $errors); 
    } 
} 
 
function rss2post_cpfooter() 
{ 
    echo "<div align=\"center\">\n<br />\n<br />\n<font size=\"1\" face=\"Verdana,Arial,Helvetica\">\nRSS To Post Plugin by <a href=\"http://www.dennistt.net\">DennisTT</a>\n</font>\n</div>\n"; 
    cpfooter(); 
} 
 
if(!function_exists('htmlspecialchars_decode')) 
{ 
    // Courtesy of people commenting @ php.net manual 
    function htmlspecialchars_decode($text) 
    { 
        return strtr($text, array_flip(get_html_translation_table(HTML_SPECIALCHARS))); 
    } 
} 
 
 
 
 
/* 
 ====================================================================== 
 lastRSS 0.9.1 
  
 Simple yet powerfull PHP class to parse RSS files. 
  
 by Vojtech Semecky, webmaster @ webdot . cz 
  
 Latest version, features, manual and examples: 
     http://lastrss.webdot.cz/ 
 
 ---------------------------------------------------------------------- 
 LICENSE 
 
 This program is free software; you can redistribute it and/or 
 modify it under the terms of the GNU General Public License (GPL) 
 as published by the Free Software Foundation; either version 2 
 of the License, or (at your option) any later version. 
 
 This program is distributed in the hope that it will be useful, 
 but WITHOUT ANY WARRANTY; without even the implied warranty of 
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
 GNU General Public License for more details. 
 
 To read the license please visit http://www.gnu.org/copyleft/gpl.html 
 ====================================================================== 
*/ 
 
/** 
* lastRSS 
* Simple yet powerfull PHP class to parse RSS files. 
*/ 
class lastRSS { 
    // ------------------------------------------------------------------- 
    // Public properties 
    // ------------------------------------------------------------------- 
    var $default_cp = 'UTF-8'; 
    var $CDATA = 'nochange'; 
    var $cp = ''; 
    var $items_limit = 0; 
    var $stripHTML = False; 
    var $date_format = ''; 
 
    // ------------------------------------------------------------------- 
    // Private variables 
    // ------------------------------------------------------------------- 
    var $channeltags = array ('title', 'link', 'description', 'language', 'copyright', 'managingEditor', 'webMaster', 'lastBuildDate', 'rating', 'docs'); 
    var $itemtags = array('title', 'link', 'description', 'author', 'category', 'comments', 'enclosure', 'guid', 'pubDate', 'source'); 
    var $imagetags = array('title', 'url', 'link', 'width', 'height'); 
    var $textinputtags = array('title', 'description', 'name', 'link'); 
 
    // ------------------------------------------------------------------- 
    // Parse RSS file and returns associative array. 
    // ------------------------------------------------------------------- 
    function Get ($rss_url) { 
        // If CACHE ENABLED 
        if ($this->cache_dir != '') { 
            $cache_file = $this->cache_dir . '/rsscache_' . md5($rss_url); 
            $timedif = @(time() - filemtime($cache_file)); 
            if ($timedif < $this->cache_time) { 
                // cached file is fresh enough, return cached array 
                $result = unserialize(join('', file($cache_file))); 
                // set 'cached' to 1 only if cached file is correct 
                if ($result) $result['cached'] = 1; 
            } else { 
                // cached file is too old, create new 
                $result = $this->Parse($rss_url); 
                $serialized = serialize($result); 
                if ($f = @fopen($cache_file, 'w')) { 
                    fwrite ($f, $serialized, strlen($serialized)); 
                    fclose($f); 
                } 
                if ($result) $result['cached'] = 0; 
            } 
        } 
        // If CACHE DISABLED >> load and parse the file directly 
        else { 
            $result = $this->Parse($rss_url); 
            if ($result) $result['cached'] = 0; 
        } 
        // return result 
        return $result; 
    } 
     
    // ------------------------------------------------------------------- 
    // Modification of preg_match(); return trimed field with index 1 
    // from 'classic' preg_match() array output 
    // ------------------------------------------------------------------- 
    function my_preg_match ($pattern, $subject) { 
        // start regullar expression 
        preg_match($pattern, $subject, $out); 
 
        // if there is some result... process it and return it 
        if(isset($out[1])) { 
            // Process CDATA (if present) 
            if ($this->CDATA == 'content') { // Get CDATA content (without CDATA tag) 
                $out[1] = strtr($out[1], array('<![CDATA['=>'', ']]>'=>'')); 
            } elseif ($this->CDATA == 'strip') { // Strip CDATA 
                $out[1] = strtr($out[1], array('<![CDATA['=>'', ']]>'=>'')); 
            } 
 
            // If code page is set convert character encoding to required 
            if ($this->cp != '') 
                //$out[1] = $this->MyConvertEncoding($this->rsscp, $this->cp, $out[1]); 
                $out[1] = iconv($this->rsscp, $this->cp.'//TRANSLIT', $out[1]); 
            // Return result 
            return trim($out[1]); 
        } else { 
        // if there is NO result, return empty string 
            return ''; 
        } 
    } 
 
    // ------------------------------------------------------------------- 
    // Replace HTML entities &something; by real characters 
    // ------------------------------------------------------------------- 
    function unhtmlentities ($string) { 
        // Get HTML entities table 
        $trans_tbl = get_html_translation_table (HTML_ENTITIES, ENT_QUOTES); 
        // Flip keys<==>values 
        $trans_tbl = array_flip ($trans_tbl); 
        // Add support for ' entity (missing in HTML_ENTITIES) 
        $trans_tbl += array(''' => "'"); 
        // Replace entities by values 
        return strtr ($string, $trans_tbl); 
    } 
 
    // ------------------------------------------------------------------- 
    // Parse() is private method used by Get() to load and parse RSS file. 
    // Don't use Parse() in your scripts - use Get($rss_file) instead. 
    // ------------------------------------------------------------------- 
    function Parse ($rss_url) { 
        // Open and load RSS file 
        if ($f = @fopen($rss_url, 'r')) { 
            $rss_content = ''; 
            while (!feof($f)) { 
                $rss_content .= fgets($f, 4096); 
            } 
            fclose($f); 
 
            // Parse document encoding 
            $result['encoding'] = $this->my_preg_match("'encoding=[\'\"](.*?)[\'\"]'si", $rss_content); 
            // if document codepage is specified, use it 
            if ($result['encoding'] != '') 
                { $this->rsscp = $result['encoding']; } // This is used in my_preg_match() 
            // otherwise use the default codepage 
            else 
                { $this->rsscp = $this->default_cp; } // This is used in my_preg_match() 
 
            // Parse CHANNEL info 
            preg_match("'<channel.*?>(.*?)</channel>'si", $rss_content, $out_channel); 
            foreach($this->channeltags as $channeltag) 
            { 
                $temp = $this->my_preg_match("'<$channeltag.*?>(.*?)</$channeltag>'si", $out_channel[1]); 
                if ($temp != '') $result[$channeltag] = $temp; // Set only if not empty 
            } 
            // If date_format is specified and lastBuildDate is valid 
            if ($this->date_format != '' && ($timestamp = strtotime($result['lastBuildDate'])) !==-1) { 
                        // convert lastBuildDate to specified date format 
                        $result['lastBuildDate'] = date($this->date_format, $timestamp); 
            } 
 
            // Parse TEXTINPUT info 
            preg_match("'<textinput(|[^>]*[^/])>(.*?)</textinput>'si", $rss_content, $out_textinfo); 
                // This a little strange regexp means: 
                // Look for tag <textinput> with or without any attributes, but skip truncated version <textinput /> (it's not beggining tag) 
            if (isset($out_textinfo[2])) { 
                foreach($this->textinputtags as $textinputtag) { 
                    $temp = $this->my_preg_match("'<$textinputtag.*?>(.*?)</$textinputtag>'si", $out_textinfo[2]); 
                    if ($temp != '') $result['textinput_'.$textinputtag] = $temp; // Set only if not empty 
                } 
            } 
            // Parse IMAGE info 
            preg_match("'<image.*?>(.*?)</image>'si", $rss_content, $out_imageinfo); 
            if (isset($out_imageinfo[1])) { 
                foreach($this->imagetags as $imagetag) { 
                    $temp = $this->my_preg_match("'<$imagetag.*?>(.*?)</$imagetag>'si", $out_imageinfo[1]); 
                    if ($temp != '') $result['image_'.$imagetag] = $temp; // Set only if not empty 
                } 
            } 
            // Parse ITEMS 
            preg_match_all("'<item(| .*?)>(.*?)</item>'si", $rss_content, $items); 
            $rss_items = $items[2]; 
            $i = 0; 
            $result['items'] = array(); // create array even if there are no items 
            foreach($rss_items as $rss_item) { 
                // If number of items is lower then limit: Parse one item 
                if ($i < $this->items_limit || $this->items_limit == 0) { 
                    foreach($this->itemtags as $itemtag) { 
                        $temp = $this->my_preg_match("'<$itemtag.*?>(.*?)</$itemtag>'si", $rss_item); 
                        if ($temp != '') $result['items'][$i][$itemtag] = $temp; // Set only if not empty 
                    } 
                    // Strip HTML tags and other bullshit from DESCRIPTION 
                    if ($this->stripHTML && $result['items'][$i]['description']) 
                        $result['items'][$i]['description'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['description']))); 
                    // Strip HTML tags and other bullshit from TITLE 
                    if ($this->stripHTML && $result['items'][$i]['title']) 
                        $result['items'][$i]['title'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['title']))); 
                    // If date_format is specified and pubDate is valid 
                    if ($this->date_format != '' && ($timestamp = strtotime($result['items'][$i]['pubDate'])) !==-1) { 
                        // convert pubDate to specified date format 
                        $result['items'][$i]['pubDate'] = date($this->date_format, $timestamp); 
                    } 
                    // Item counter 
                    $i++; 
                } 
            } 
 
            $result['items_count'] = $i; 
            return $result; 
        } 
        else // Error in opening return False 
        { 
            return False; 
        } 
    } 
} 
 
 
?>
  
	 
	
	
Gruß, 
NixxusMinimax
 
	
	
 
 
	
	
	
		
	Beiträge: 18.383 
	Themen: 257 
	Registriert seit: 09.02.2005
	
	 
 
	
	
		Wenn ich das richtig sehe ist der Code schon enthalten und die Betreffe werden auf 60 Zeichen gekürzt. Bei Bedarf kannst du die Zahlen ändern: 
PHP-Code: $item_data['title'] = substr($item_data['description'], 0, 60); 
if(strlen($item_data['description']) > 60) 
{ 
    $item_data['title'] .= '...'; 
}  
  
	 
	
	
Gruß, 
Michael
 
Support erfolgt NUR im Forum! 
Bitte gelöste Themen als "erledigt" markieren. 
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
 
	
	
 
 
	
	
	
		
	Beiträge: 136 
	Themen: 15 
	Registriert seit: 18.01.2007
	
 MyBB-Version: 1.2.12
	 
 
	
	
		Oops, sollte mal ab und zu meine Brille aufsetzen.  
 
Danke dir!
	 
	
	
Gruß, 
NixxusMinimax
 
	
	
 
 
	
	
	
		
	Beiträge: 136 
	Themen: 15 
	Registriert seit: 18.01.2007
	
 MyBB-Version: 1.2.12
	 
 
	
	
		Hallo, 
 
heute kam die nächste Nachricht mit Überlänge. Problem besteht trotz Änderung weiterhin, soll heißen: der Betreff wir nicht auf die eingestellte Anzahl Zeichen gekürzt. Hab ich evtl. noch was übersehen?
	 
	
	
Gruß, 
NixxusMinimax
 
	
	
 
 
	
	
	
		
	Beiträge: 18.383 
	Themen: 257 
	Registriert seit: 09.02.2005
	
	 
 
	
	
		Suche nach: 
PHP-Code: if(empty($item_data['title'])) 
{ 
    $item_data['title'] = substr($item_data['description'], 0, 60); 
    if(strlen($item_data['description']) > 60) 
    { 
        $item_data['title'] .= '...'; 
    } 
}  
 Ersetzen durch:
 PHP-Code: if(empty($item_data['title'])) 
{ 
    $item_data['title'] = substr($item_data['description'], 0, 60); 
    if(strlen($item_data['description']) > 60) 
    { 
        $item_data['title'] .= '...'; 
    } 
} else { 
    if(strlen($item_data['title']) > 60) 
    { 
        $item_data['title'] = substr($item_data['title'], 0, 60).'...'; 
    } 
}  
  
	 
	
	
Gruß, 
Michael
 
Support erfolgt NUR im Forum! 
Bitte gelöste Themen als "erledigt" markieren. 
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
 
	
	
 
 
	
	
	
		
	Beiträge: 136 
	Themen: 15 
	Registriert seit: 18.01.2007
	
 MyBB-Version: 1.2.12
	 
 
	
	
		sehr schön, das Beschneiden des Betreffs funktioniert jetzt schonmal. Ich hoffe dass es auch daran lag. 
Ich setzte das Thema mal vorsichtig auf Erledigt. 
 
Besten Dank & Gruß
	 
	
	
Gruß, 
NixxusMinimax
 
	
	
 
 
	 
 |