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, 11:34
SusiSorglos
 Registrierter Benutzer
Links : Onlinestatus : SusiSorglos ist offline
Registriert seit: May 2007
Ort: Farfaraway 02203
Beiträge: 71
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, 12: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, 12:18
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
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, 13:27
SusiSorglos
 Registrierter Benutzer
Links : Onlinestatus : SusiSorglos ist offline
Registriert seit: May 2007
Ort: Farfaraway 02203
Beiträge: 71
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, 17: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, 21:14
SusiSorglos
 Registrierter Benutzer
Links : Onlinestatus : SusiSorglos ist offline
Registriert seit: May 2007
Ort: Farfaraway 02203
Beiträge: 71
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, 22: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 24-01-2015, 23: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, 01:09
SusiSorglos
 Registrierter Benutzer
Links : Onlinestatus : SusiSorglos ist offline
Registriert seit: May 2007
Ort: Farfaraway 02203
Beiträge: 71
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 01: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 16:58
Teile aus einem String entfernen Laire PHP Developer Forum 4 11-10-2009 19:51
String druchsuchen und ggf. teile davon entfernen medium22 PHP Developer Forum 4 19-12-2008 11:38
string, teile ausschneiden pippo PHP Developer Forum 7 14-10-2004 11:53
Einzelne Teile vom Bild anklicken Hotpown HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 19 04-12-2003 15: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

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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