webForumDet fria alternativet

Steppa upp version?

PHP

4 svar · 2 342 visningar · startad av bassebhu

Medlem sedan nov. 20016 480 inlägg
Frågan#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!

Medlem sedan juli 200012 978 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?

Medlem 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);
}
Medlem 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)?

Medlem sedan juni 20019 519 inlägg
#5

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

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