php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 24-01-2015, 12:34
SusiSorglos
 Registrierter Benutzer
Links : Onlinestatus : SusiSorglos ist offline
Registriert seit: May 2007
Ort: Farfaraway 02203
Beiträge: 72
SusiSorglos ist zur Zeit noch ein unbeschriebenes Blatt
Question ucfirst auf Teile vom String anwenden!?

Hallo, hier schon mal mein Code:
PHP-Code:
function sentence_case($string) {
    
$sentences preg_split('/([ -.?!]+)/'$string, -1PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
    
$new_string '';
    foreach (
$sentences as $key => $sentence) {
        
$new_string .= ($key 1) == 0?
            
ucfirst(strtolower(trim($sentence))) :
            
$sentence.'';
    }
    return 
trim($new_string);
}

echo 
sentence_case("DRK VEREIN FÜR DIES UND FÜR DAS IN KÖLN"); 
// Drk Verein Für Dies Und Für Das In Köln
--- So kommt es raus

Diesen Schnipsen habe ich auf php.net gefunden und nutze Ihn eigentlich schon seit Jahren. Allerdings werden Abkürzungen und (und, dies, das) auch mit behaldelt. Ich habe ich mich mal auf die Suche gemacht um dies vielleicht auch noch hin zu bekommen.

// DRK Verein für dies und für das in Köln
--- So sollte es optimalerweise aussehen


Ich dachte mir verschiedene Wörter in ein Array zu schieben und damit jeweils komplett klein zu schreiben bzw. komplett groß zu schreiben.

klein = "und","dies","für","in"
groß = "DRK"

kann mir da jemand weiter helfen?

Cu Susi
__________________
PHP 7.2, MySQL 5.7 auf U16.04
Mit Zitat antworten
  #2 (permalink)  
Alt 24-01-2015, 13:16
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

PHP kennt in_array() !
Und dann kannst du die Behandlung davon abhängig machen.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #3 (permalink)  
Alt 24-01-2015, 13:18
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Sowas wirst du wohl ohne umfangreichem Wörterbuch und Grammatik-Parser nicht wirklich schaffen. Mit einem einfachen Array kommst du hier nicht weiter.

Beispiel:

"Wir laufen zur Bushaltestelle."
"Das Laufen ist anstrengend."

Einmal klein und einmal groß geschrieben.
Mit Zitat antworten
  #4 (permalink)  
Alt 24-01-2015, 14:27
SusiSorglos
 Registrierter Benutzer
Links : Onlinestatus : SusiSorglos ist offline
Registriert seit: May 2007
Ort: Farfaraway 02203
Beiträge: 72
SusiSorglos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Natürlich kann das Vorhaben sehr Umfangreich sein. Nicht aber in meinem Fall. Die Datensatze die ich habe, sind im Wortumfang relativ begrenzt. Es sind immer nur Bezeichnungen die dem Beispiel ähnlich sind. Also es betrifft wirklich nur Füllworter wie (und, auf, der, die, das, usw) und Eigennamen bzw Abkürzungen (THC, OCB, OK). Da ist mit wenigen Werten schon viel geholfen.

Es muss auch nicht 100%ig sein. Nur diese komplette Großschreibung die ich bei vielen Datensätzen habe, sieht etwas unprof. aus.

####
@combie
die func in_array ist mir bekannt, nutze sie sogar hin und wieder.
Mein Problem ist aber, dass ich nicht hin bekomme dies in meine gefundene Funktion so zu übernehmen das sie tut was ich gerne möchte.
__________________
PHP 7.2, MySQL 5.7 auf U16.04
Mit Zitat antworten
  #5 (permalink)  
Alt 24-01-2015, 18:05
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Wo klemmt es denn?
__________________
Wir werden alle sterben
Mit Zitat antworten
  #6 (permalink)  
Alt 24-01-2015, 22:14
SusiSorglos
 Registrierter Benutzer
Links : Onlinestatus : SusiSorglos ist offline
Registriert seit: May 2007
Ort: Farfaraway 02203
Beiträge: 72
SusiSorglos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich habe es vorhin mal probiert, dabei bin ich folgendermaßen vorgegangen
PHP-Code:
function sentence_case($string) {
    
$sentences preg_split('/([ ]+)/'$string, -1PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
    
$new_string '';

    
$klein = array("DER""DIE""DAS""UND""IN");
    
$gross = array("THC""OCB""OK""MFG");

    foreach (
$sentences as $key => $sentence) {
        if (
in_array($klein$sentence)) {
            
$new_string .= strtolower(trim($sentence)); 
        }
        elseif (
in_array($gross$sentence)) {
            
$new_string .= strtolower(trim($sentence)); 
        }
        else {
            
$new_string .= ucfirst(strtolower(trim($sentence))); 
        }
    }
    return 
trim($new_string);
}

echo 
sentence_case("OCB DER DIE BLAUES THC IN KÖLN"); 
Soweit ich das verstehe ist $sentences ein ARRAY. $sentence wird durch die foreach-Schleife zu einem String.
Nun kann ich aber mit in_array nur Array's miteinander vergleichen.

Also hier liegt erst einmal mein Problem. Oder sollte ich doch besser preg_replace nutzen und den ganzen foreach Kram weg lassen!?
__________________
PHP 7.2, MySQL 5.7 auf U16.04
Mit Zitat antworten
  #7 (permalink)  
Alt 24-01-2015, 23:57
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von SusiSorglos Beitrag anzeigen
Soweit ich das verstehe ist $sentences ein ARRAY. $sentence wird durch die foreach-Schleife zu einem String.
Wenn dein split richtig funktioniert hat (das findest du mit einem einfachen var_dump heraus), dann ist $sentences ein Array, ja; ein Array von Strings.
Durch das foreach „wird“ nichts zu Strings, es durchläuft einfach das Array, und gibt dir ein Element nach dem anderen – die hier zufälliger Weise Strings sind.
Zitat:
Nun kann ich aber mit in_array nur Array's miteinander vergleichen.
Nein. in_array überprüft, ob ein bestimmter Wert in einem Array als Element vorhanden ist.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #8 (permalink)  
Alt 25-01-2015, 00:24
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Zitat von SusiSorglos Beitrag anzeigen
Ich habe es vorhin mal probiert, dabei bin ich folgendermaßen vorgegangen
PHP-Code:
function sentence_case($string) {
    
$sentences preg_split('/([ ]+)/'$string, -1PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
    
$new_string '';

    
$klein = array("DER""DIE""DAS""UND""IN");
    
$gross = array("THC""OCB""OK""MFG");

    foreach (
$sentences as $key => $sentence) {
        if (
in_array($klein$sentence)) {
            
$new_string .= strtolower(trim($sentence)); 
        }
        elseif (
in_array($gross$sentence)) {
            
$new_string .= strtolower(trim($sentence)); 
        }
        else {
            
$new_string .= ucfirst(strtolower(trim($sentence))); 
        }
    }
    return 
trim($new_string);
}

echo 
sentence_case("OCB DER DIE BLAUES THC IN KÖLN"); 
Soweit ich das verstehe ist $sentences ein ARRAY. $sentence wird durch die foreach-Schleife zu einem String.
Nun kann ich aber mit in_array nur Array's miteinander vergleichen.

Also hier liegt erst einmal mein Problem. Oder sollte ich doch besser preg_replace nutzen und den ganzen foreach Kram weg lassen!?
Du hast die Parameter von in_array() vertauscht.
Und zu großzügig mit trim()
Bei in_array($gross, $sentence) möchtest du upper, nicht lower
Ansonsten tuts das doch ...
__________________
Wir werden alle sterben
Mit Zitat antworten
  #9 (permalink)  
Alt 25-01-2015, 02:09
SusiSorglos
 Registrierter Benutzer
Links : Onlinestatus : SusiSorglos ist offline
Registriert seit: May 2007
Ort: Farfaraway 02203
Beiträge: 72
SusiSorglos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja Stimmt! Ich habe die Werte getauscht, die TRIM's entfernt und hinter jedem Wort noch ein Leerzeichen eingefügt.

Habe jetzt keine Lust mehr, aber werde es morgen mal einbauen und mit realen Wörtern bestücken und testen ob es so funktioniert.

THX an alle!!


PHP-Code:
function sentence_case($string) {
    
$sentences preg_split('/([ ]+)/'$string, -1PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
    
$new_string '';

    
$klein = array("DER""DIE""DAS""UND""IN""IST""NICHT");
    
$gross = array("THC""OCB""OK""MFG");

    foreach (
$sentences as $key => $sentence) {
        if (
in_array($sentence$klein)) {
            
$new_string .= strtolower($sentence)." "
        }
        elseif (
in_array($sentence$gross)) {
            
$new_string .= strtoupper($sentence)." "
        }
        else {
            
$new_string .= ucfirst(strtolower($sentence))." "
        }
    }
    return 
trim($new_string);
}

echo 
sentence_case("THC IN OCB IST NICHT OK"); 
__________________
PHP 7.2, MySQL 5.7 auf U16.04

Geändert von SusiSorglos (25-01-2015 um 02:14 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Teile in String ersetzen streuner PHP Developer Forum 6 07-06-2010 17:58
Teile aus einem String entfernen Laire PHP Developer Forum 4 11-10-2009 20:51
String druchsuchen und ggf. teile davon entfernen medium22 PHP Developer Forum 4 19-12-2008 12:38
string, teile ausschneiden pippo PHP Developer Forum 7 14-10-2004 12:53
Einzelne Teile vom Bild anklicken Hotpown HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 19 04-12-2003 16:47

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:28 Uhr.