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: 83
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 8.0, MariaDB 10.5 auf U20.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.826
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: 83
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 8.0, MariaDB 10.5 auf U20.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: 83
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 8.0, MariaDB 10.5 auf U20.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: 83
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 8.0, MariaDB 10.5 auf U20.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

Vorteile eines flexiblen ERP Systems
Vorteile eines flexiblen ERP SystemsEin flexibles ERP System bietet in allen Unternehmensbereichen die Grundlage für eine erfolgreiche Verwaltung, Organisation und Planung aller Prozesse.

01.12.2021 | Berni

Software für alle Arten von digitalen Marktplätzen
Software für alle Arten von digitalen MarktplätzenDigitale Marktplätze sind nicht nur im B2C Geschäft seit Jahren etabliert, sondern erfreuen sich mit Kleinanzeigen-Märkten auf lokaler und regionaler Ebene auch im privaten Bereich wachsender Beliebtheit.

09.11.2021 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

09.11.2021 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Newsletter Script SuperWebMailer ansehen PHP Newsletter Script SuperWebMailer

Die webbasierte PHP Newsletter Software SuperWebMailer ist die optimale Lösung zur Durchführung eines erfolgreichen E-Mail-Marketings. Zur Nutzung des PHP Script-Pakets ist eine eigene Webpräsenz/Server mit PHP 5 oder neuer, MySQL 4 oder neuer und die

28.10.2021 mirko_swm | Kategorie: PHP/ Mail
Guestbook Light ansehen Guestbook Light

Das Guestbook Light (kurz: "Gblight") ist ein kinderleichtes Gästebuch in PHP. Durch den Einsatz einer SQLite Datenbank ist es einfach, leicht portabel und schnell. Aufgrund moderner Techniken erfüllt Gblight auch die neuesten Webstandards.

28.10.2021 scripthostingnet | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:29 Uhr.