webForumDet fria alternativet

Stora bokstäver

4 svar · 369 visningar · startad av apg29

apg29Medlem sedan nov. 200584 inlägg
#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?

SPiNMedlem 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.

apg29Medlem 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.

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

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

140 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)