Meddelande

Minska
No announcement yet.

Steppa upp version?

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Steppa upp version?

    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.

    Kod:
    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!
    bassebhu - din kompis bland kompisar

    Om du mot förmodan inte är nöjd med kompositionen av ovanstående inlägg,
    eller att det helt enkelt inte nådde upp till dina förväntningtar - var god:

    Rapportera till bassebhu

  • #2
    Om det är ett heltal vill du öka med ett heltal, annars skall decimaler ökas!
    Olika om det är tiondel eller hundradel?
    Livet är kort och Nu!
    Läs mera!
    !?

    Kommentera


    • #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):

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

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

      php kan kanske vara:
      [kod]function bump_number($groups) {
      return intval($groups[1], 10) + 1;
      }

      function version($str) {
      return preg_replace_callback('/(\d+)$/im', 'bump_number', $str);
      }[/kod]
      "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

      Kommentera


      • #4
        Wow, geni. Har inte listat ut hur det går till än, men det funkar

        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)?
        bassebhu - din kompis bland kompisar

        Om du mot förmodan inte är nöjd med kompositionen av ovanstående inlägg,
        eller att det helt enkelt inte nådde upp till dina förväntningtar - var god:

        Rapportera till bassebhu

        Kommentera


        • #5
          kolla det i version funktionen och se om .substr(0,1) är "v" eller "V"
          "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

          Kommentera

          Working...
          X