git.schokokeks.org
Repositories
Help
Report an Issue
bibweb.git
Code
Commits
Branches
Tags
Suche
Strukturansicht:
954b6d8
Branches
Tags
master
bibweb.git
lib
helper.php
Großschreibung von Namen sauber normalisieren
Bernd Wurst
commited
954b6d8
at 2025-10-03 12:16:25
helper.php
Blame
History
Raw
<?php function namen_korrigieren($name) { $name = trim($name); if (empty($name)) { return ''; } // Wenn CAPS-Lock an war, korrigieren wir das // Wir entfernen nicht-alphab. Zeichen, um nur die Buchstaben zu prüfen. // Wir verwenden mb_strtoupper() und mb_strtolower() für Multibyte-Sicherheit. $nur_buchstaben = preg_replace('/[^a-zA-ZäöüÄÖÜß]/', '', $name); if (!empty($nur_buchstaben) && $nur_buchstaben === mb_strtoupper($nur_buchstaben, 'UTF-8')) { // Wenn alle Buchstaben Großbuchstaben sind (Caps-Lock aktiv), // wandeln wir den gesamten Namen in Kleinbuchstaben um, um ihn zu "resetten". $name = mb_strtolower($name, 'UTF-8'); } // Ersten Buchstaben jedes "Wortes" groß schreiben, den Rest belassen $name = preg_replace_callback( '/([\s\'\-]|^)([a-zA-ZäöüÄÖÜß])/', function ($matches) { // Schreibe den Buchstaben im zweiten Match-Teil groß (Multibyte-sicher) return $matches[1] . mb_strtoupper($matches[2], 'UTF-8'); }, $name ); // Spezielle Präfixe (Artikel) in Kleinbuchstaben umwandeln $praefixe = array( 'An', 'Am', 'Von', 'Van', 'De', 'Da', 'Ten', 'Zu', 'Vom', 'Zum', 'Zur', 'Der', 'Die', 'Das' ); foreach ($praefixe as $prefix) { // Suchmuster: Wortgrenze, Präfix, Leerzeichen $pattern = '/\b(' . preg_quote($prefix, '/') . ')\s/i'; $name = preg_replace_callback( $pattern, function ($m) { // Präfix in Kleinbuchstaben umwandeln und Leerzeichen beibehalten return mb_strtolower($m[1], 'UTF-8') . ' '; }, $name ); } return $name; }