Worte mit Leerzeichen trennen

rernanded

Erfahrenes Mitglied
Hallo,

ich muß irrtümlich zusammengeschriebene Hauptworte in Texten im Tabellenfeld "Datenfeld6" trennen.

Beispiel: AuszugDeutschlandGeschichichtsbuchFeldherr

Am Ende soll da stehen: Auszug Deutschland Geschichichtsbuch Feldherr

MONI
 
Such nach einem Kleinbuchstaben direkt gefolgt von einem Großbuchstaben
und setz ein Leerzeichen dazwischen.
 
Oder so:

PHP:
<?php

function space($string) {

$pos = 1;

while ($pos < strlen($string)) {

	if (ord(substr($string, $pos, 1)) == ord(strtoupper(substr($string, $pos, 1)))) {
		$splitt[] = substr($string, 0, $pos);
		$string = substr($string, $pos, strlen($string));
		$pos = 1;
	} else {
		$pos++;
	}

}

	return implode(" ", $splitt);
}

$string = "HundKatzeMausHamsterGoldfisch";
echo "<b>Original :</b> " .$string;
echo "<br /><br />";
echo "<b>Mit Leerzeichen :</b> " .space($string);

?>
 
pit preg_replace allen Grossbuchstaben ein Leerzeichen voransetzen und dann mit trim() das Leerzeichen vor dem Text entfernen
PHP:
$string = trim(preg_replace('/([A-Z])/', ' \1', $string));
 
pit preg_replace allen Grossbuchstaben ein Leerzeichen voransetzen und dann mit trim() das Leerzeichen vor dem Text entfernen
PHP:
$string = trim(preg_replace('/([A-Z])/', ' \1', $string));


yaslaw du bist mein Held, ich hatte es mit preg_match_all versucht und auch nur eine Zeile.
Allerdings gibts ein kleines Problem bei Deinem Code mit Institutionsnamen die GROSSbuchstaben enthalten: BAHW = Bayr. Akademie der Heereswissenschaften.
Da hab ich jetzt ein B A H W

MONI
 
Gegenfrage. Wie kann ein Program erkennen wo BAHW aufhört und 'Unterführung' beginnt?
Code:
HausSonneBHWFeldweg
Oder wenn zwei Grossgeschriebene Abkürzungen Hintereinander folgen?

Ich denke diese Fälle solltet ihr von Hand ausbügeln.
Ich würde das Script eh nur einmal laufen lassen um die Daten in der DB zu bereinigen
 
Gegenfrage. Wie kann ein Program erkennen wo BAHW aufhört und 'Unterführung' beginnt?
Code:
HausSonneBHWFeldweg
Oder wenn zwei Grossgeschriebene Abkürzungen Hintereinander folgen?

Ich denke diese Fälle solltet ihr von Hand ausbügeln.
Ich würde das Script eh nur einmal laufen lassen um die Daten in der DB zu bereinigen


Da hast Du (fast) recht. Da ich nur Hauptworte habe(s. 1. Thread) folgt einem GROSSEN idR ein kleiner Buchstabe und ein Hauptwort endet immer auf einen kleinen Buchstaben.

Bei 2 oder mehr Abkürzungen hintereinander geht nix.

HausSonneBHWFeldweg
Okay lassen wir es. Oder will sich noch jemand dran versuchen?

MONI
 
$string = trim(preg_replace('/([A-Z][a-z])/', ' \1', $string));
sollte allen Grossbuchstaben die von einen kleinbuchstaben gefolgt werden ein Leerzeichen voransetzen
hoffe ich :)
 

Neue Beiträge

Zurück