webForumDet fria alternativet

Stora bokstäver

PHP

4 svar · 371 visningar · startad av apg29

Medlem sedan nov. 200584 inlägg
Frågan#1

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?

Medlem sedan mars 20007 896 inlägg
#2
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.

Medlem sedan nov. 200584 inlägg
#3

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.

Medlem sedan mars 20007 896 inlägg
#4

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);
Medlem sedan nov. 200584 inlägg
#5

Nu blev jag jätteglad! Den fungerar! Tack så mycket SPiN!

275 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)