// MODUL 9 - UMBRÜCHE if (isset($rates['module_9']) && $rates['module_9'] > 0) { rss_humanizer_log("MODUL 9: UMBRÜCHE GESTARTET (ULTRA-STRIKT: KEINE UMBRÜCHE IN KLAMMERN, NUR NACH EXAKT DEFINIERTEN ZEICHEN, HTML-Sicher)"); $break_count = 0; $max_breaks = $rates['module_9']; rss_humanizer_log("MODUL 9: Konfigurierte Rate (max_breaks) = " . $max_breaks); // Die exakten Umbruch-Trigger. Längere Sequenzen zuerst, um korrekte Matches zu gewährleisten. // Bindestriche entfernt, Punkt hinzugefügt. $strict_break_triggers = array( '.....', '....', '...', '.', // Punkt als neue Umbruchstelle hinzugefügt ' |', ' /', ' ¦', ' ↪', '|', '/', '¦', '↪' ); $original_full_text = $text; $text_to_process = $original_full_text; // Initialisiere den Text für die Verarbeitung // Variablen zum Speichern des geschützten Inhalts und seines Platzhalters $protected_content = ''; $content_placeholder = '###PROTECTED_CONTENT_PLACEHOLDER_' . uniqid() . '###'; $protected_content_found = false; // VERSUCH 1: Den ... Inhalt innerhalb von

temporär ersetzen. $satire_intro_i_regex = '/(]*?class="satire-intro"[^>]*?>.*?)(.*?)(<\/i>.*?<\/p>)/isU'; if (preg_match($satire_intro_i_regex, $text_to_process, $matches)) { $protected_content = $matches[2]; // Der Inhalt zwischen und $string_to_replace = $matches[1] . $protected_content . $matches[3]; $replacement_string = $matches[1] . $content_placeholder . $matches[3]; $text_to_process = str_replace($string_to_replace, $replacement_string, $text_to_process); $protected_content_found = true; rss_humanizer_log("MODUL 9: Spezifischen -Inhalt innerhalb von

gefunden und durch Platzhalter ersetzt. Länge des geschützten Inhalts: " . mb_strlen($protected_content, 'UTF-8')); } else { // VERSUCH 2 (Fallback): Wenn kein -Inhalt gefunden, gesamten

...

schützen. $satire_intro_p_regex = '/(]*?class="satire-intro"[^>]*?>)(.*?)(<\/p>)/isU'; if (preg_match($satire_intro_p_regex, $text_to_process, $matches)) { $protected_content = $matches[0]; // Der gesamte

...

Block $text_to_process = str_replace($matches[0], $content_placeholder, $text_to_process); $protected_content_found = true; rss_humanizer_log("MODUL 9:

gefunden, aber kein -Inhalt. Gesamten

-Block als geschützt markiert. Länge des geschützten Inhalts: " . mb_strlen($protected_content, 'UTF-8')); } else { rss_humanizer_log("MODUL 9: Weder -Inhalt noch

-Tag gefunden. Der gesamte Text wird für Umbrüche analysiert."); } } // Prüfen, ob nach der Platzhalter-Ersetzung noch Text zum Verarbeiten übrig ist. if (empty(trim(str_replace($content_placeholder, '', $text_to_process)))) { rss_humanizer_log("MODUL 9: Der Text (exkl. geschütztem Intro) ist leer oder enthält nur Whitespace. Keine Umbrüche möglich."); rss_humanizer_log("MODUL 9 BEENDET - Gesamtumbrüche: 0 (Ziel: $max_breaks)"); if ($protected_content_found) { return str_replace($content_placeholder, $protected_content, $text_to_process); } return $original_full_text; } rss_humanizer_log("MODUL 9: Länge des Texts zur Verarbeitung nach Platzhalter-Ersetzung: " . mb_strlen($text_to_process, 'UTF-8')); $all_potential_break_locations = []; $current_pos = 0; $text_len = mb_strlen($text_to_process, 'UTF-8'); $paren_level = 0; // Zähler für runde Klammern $bracket_level = 0; // Zähler für eckige Klammern // Durch den Text iterieren und nach den definierten Triggern suchen while ($current_pos < $text_len) { $found_match = false; $current_char = mb_substr($text_to_process, $current_pos, 1, 'UTF-8'); // Klammer-Level aktualisieren if ($current_char === '(') { $paren_level++; } elseif ($current_char === ')') { $paren_level--; } elseif ($current_char === '[') { $bracket_level++; } elseif ($current_char === ']') { $bracket_level--; } // Erst alle HTML-Tags überspringen if ($current_char === '<') { $end_tag_pos = mb_strpos($text_to_process, '>', $current_pos, 'UTF-8'); if ($end_tag_pos !== false) { $current_pos = $end_tag_pos + 1; continue; // Gehe zur nächsten Iteration der Schleife } } // Nur prüfen, wenn wir uns NICHT innerhalb von Klammern befinden if ($paren_level === 0 && $bracket_level === 0) { foreach ($strict_break_triggers as $trigger) { $trigger_len = mb_strlen($trigger, 'UTF-8'); // Suchen, ob der Trigger an der aktuellen Position beginnt if (mb_substr($text_to_process, $current_pos, $trigger_len, 'UTF-8') === $trigger) { // Die Einfügeposition ist direkt NACH dem gesamten gefundenen Trigger $insertion_point = $current_pos + $trigger_len; $all_potential_break_locations[] = $insertion_point; rss_humanizer_log("MODUL 9: Potenzielle Umbruchstelle gefunden nach Trigger '" . $trigger . "' bei Globalem Offset " . $insertion_point . " (Nicht in Klammern)"); $found_match = true; // Nach dem Fund springen wir über den gefundenen Trigger hinaus $current_pos += $trigger_len; break; // Beende die innere foreach-Schleife (wir haben einen Trigger gefunden) } } } else { rss_humanizer_log("MODUL 9: Aktuelle Position " . $current_pos . " ist innerhalb von Klammern (Rund: " . $paren_level . ", Eckig: " . $bracket_level . "). Umbrüche werden hier vermieden."); } if (!$found_match) { $current_pos++; // Wenn kein Trigger an dieser Position gefunden, einfach zum nächsten Zeichen gehen } } rss_humanizer_log("MODUL 9: Gesamtzahl potenzieller Umbruchstellen im Text zur Verarbeitung: " . count($all_potential_break_locations)); // Die Umbruchpositionen chaotisch mischen und die Top N auswählen. shuffle($all_potential_break_locations); $selected_insert_positions = array_slice($all_potential_break_locations, 0, $max_breaks); // WICHTIG: Positionen ABSTEIGEND sortieren, um Offset-Verschiebungen beim Einfügen zu vermeiden. rsort($selected_insert_positions); // Umbrüche in 'text_to_process' einfügen. foreach ($selected_insert_positions as $pos) { if ($break_count >= $max_breaks) { break; } $log_context_length = 30; $log_start = max(0, $pos - $log_context_length); $log_end = min(mb_strlen($text_to_process, 'UTF-8'), $pos + $log_context_length); $log_snippet = mb_substr($text_to_process, $log_start, $log_end - $log_start, 'UTF-8'); // Der eigentliche Umbruch: Fügt

ein. $text_to_process = mb_substr($text_to_process, 0, $pos, 'UTF-8') . '

' . mb_substr($text_to_process, $pos, null, 'UTF-8'); $break_count++; rss_humanizer_log("MODUL 9: Umbruch eingefügt bei Position " . $pos . ". Kontext: '..." . $log_snippet . "...'"); } // Schritt 3: Den geschützten Inhalt wieder an seiner ursprünglichen Stelle einfügen. if ($protected_content_found) { $text = str_replace($content_placeholder, $protected_content, $text_to_process); } else { $text = $text_to_process; // Wenn kein geschützter Inhalt gefunden wurde, ist text_to_process der finale Text. } rss_humanizer_log("MODUL 9 BEENDET - Gesamtumbrüche: $break_count (Ziel: $max_breaks)"); }
Warning: Cannot modify header information - headers already sent by (output started at /var/customers/webs/Muhsin/muhsin.de/wp-content/plugins/rss-humanizer/rss-humanizer.php:1) in /var/customers/webs/Muhsin/muhsin.de/wp-includes/pluggable.php on line 1450

Warning: Cannot modify header information - headers already sent by (output started at /var/customers/webs/Muhsin/muhsin.de/wp-content/plugins/rss-humanizer/rss-humanizer.php:1) in /var/customers/webs/Muhsin/muhsin.de/wp-includes/pluggable.php on line 1453