Ibland får folk för sig att skriva STORA BOKSTÄVER I LÅNGA STYCKEN, och detta kan man fixa med strtolower(), men då blir alla bokstäver små, till och med de efter punkt, utropstecken eller frågetecken. Är det någon som har en smart idé om hur man kan göra?
Stora bokstäver
4 svar · 369 visningar · startad av apg29
function sentence_fix ($str, $delimiter) {
$buffer = '';
$sentences = explode ($delimiter, $str);
foreach ($sentences as $sentence) {
$buffer .= ucfirst (strtolower ($sentence)) . $delimiter . ' ';
}
return $buffer;
}
Användning:
$sentence = "En mening SOM AVSLUTAS meD PuNkt. OCH En mED! Samt EN MeD?";
$sentence = sentence_fix ($sentence, '.');
$sentence = sentence_fix ($sentence, '!');
$sentence = sentence_fix ($sentence, '?');
/* $sentence == 'En mening som avslutas med punkt. Och en med! Samt en med? ' */
Något att arbeta vidare på om inte annat.
Tack så jättemycket. Kanske har jag gjort något fel men resultatet blir så här för mig:
En mening som avslutas med punkt. och en med! samt en med? . ! ?
Det blir alltså inte riktigt rätt.
Japp, det var en väldigt dum funktion inser jag nu. Jag började med att göra en funktion som hanterade alla meningsavgränsare, men ändrade mig mitt i. Det var ju dumt. ;)
Nu borde jag ha kommit på fötter igen dock;
function sentence_fix ($str) {
$buffer = '';
$sentences = preg_split ('/([\.\?!])/', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
foreach ($sentences as $sentence) {
$buffer .= ucfirst (strtolower (trim ($sentence)));
}
return str_replace (array ('.', '!', '?'), array ('. ', '! ', '? '), $buffer);
}
Används:
$str = "En mening SOM AVSLUTAS meD PuNkt. OCH En mED! Samt EN MeD?";
$str = sentence_fix ($str);
Nu blev jag jätteglad! Den fungerar! Tack så mycket SPiN!