En ik wil deze in 2'en splitsen op de eerste "-" van achteren, dus:
string1 = "foo-bar-baz-"
string2 = "foobar"
Hoe doe ik dit dan op de snelste manier? Kan ik daar alleen substr voor gebruiken, of zijn er nog alternatieven waarbij ik in 1x de string in 2'en kan "knippen"?
Ivo, die character class is niet nodig aangezien de eerste repetition greedy is. De dash zal dus altijd al sowieso de laatste dsash van de string zijn. En dan is $ ook niet nodig, omdat de tweede repetition ook greedy is en dus alles totaan het eind zou matchen, om diezelfde rede is ^ ook overbodig. Als laatst zou ik + ipv * als repetitiom gebruiken.
Maar goed, ik zou het niet aanraden. Preg is voor dit soort simpele dingen niet gemaakt, waardoor hij veel trager zou zijn dan andere oplossingen.
Die met arrays zou ik ook niet gebruiken, arrays is nou niet php's beste punt en je hebt onnodig veel functie calls.
De string functies zijn hiervoor gemaakt, dus die zou ik lekker gaan gebruiken:
<?php
$rDashPos = strrpos($str, '-');
$str1 = substr($str, 0, $rDashPos);
$str2 = substr($str, $rDashPos + 1);
?>