webForumDet fria alternativet

Steppa upp version?

4 svar · 2 340 visningar · startad av bassebhu

bassebhuMedlem sedan nov. 20016 480 inlägg
#1

Hallå!

Jag håller på att bygga en funktion som tar ett fritextfält och ökar på dess värde med ett hack. Några exempel på vad jag vill att den ska göra:

1 blir 2
1.1 blir 1.2
9.9 blir 9.10
v9,0 blir v9,1
v.9 blir v.10
v.19,9 blir v.19,10
v.19.0 blir v.19.1
v19 blir v20
etc.

Här är mitt fulförsök som funkar sånär som på att den inte klarar decimalerna och att is_numeric inte tar både punkt och komma vad det verkar.

function next_version($str)
{
	$string = $str;
	if( preg_match("/[0-9.,vV]/",$str) && strtolower(substr($str, 0, 2)) == 'v.' ) {
		$str = substr($str, 2);
		if( is_numeric($str) ) {
			$str = $str+1;
			$str = substr($string, 0, 2) . $str;
			$string = $str;
		}
	}
	elseif( preg_match("/[0-9.,vV]/",$str) && strtolower(substr($str, 0, 1)) == 'v' ) {
		$str = substr($str, 1);
		if( is_numeric($str) ) {
			$str = $str+1;
			$str = substr($string, 0, 1) . $str;
			$string = $str;
		}
	}
	elseif( preg_match("/[0-9.,]/",$str) ) {
		if( is_numeric($str) ) {
			$str = $str+1;
			$string = $str;
		}
	}
	return $string;
}

Idéer? Tack!

LaspMedlem sedan juli 200012 980 inlägg
#2

Om det är ett heltal vill du öka med ett heltal, annars skall decimaler ökas!
Olika om det är tiondel eller hundradel?

voigtann1Medlem sedan juni 20019 519 inlägg
#3

är det i en sträng eller strängarna är "v1" osv eller är det "vi är på v1" som du vill uppdatera? Annars är det ju bara att hitta det sista talet (\d+)$ och jobba med det?

med javascript (borde vara rätt likt i PHP):

var version = function(str) {
  return String(str).replace(/(\d+)$/img, function(match, a){
    return parseInt(a, 10) + 1;
  });
};

skall försöka få en php site jag kan testa det på.

php kan kanske vara:

function bump_number($groups) {
	return intval($groups[1], 10) + 1;
}

function version($str) {
	return preg_replace_callback('/(\d+)$/im', 'bump_number', $str);
}
bassebhuMedlem sedan nov. 20016 480 inlägg
#4

Wow, geni. Har inte listat ut hur det går till än, men det funkar :D

Tack!

En liten grej bara. Går det att lägga till så att den bara gör detta om strängen börjar med en siffra eller med v i gemen eller versal (v eller V)?

voigtann1Medlem sedan juni 20019 519 inlägg
#5

kolla det i version funktionen och se om .substr(0,1) är "v" eller "V"

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