webForumDet fria alternativet

Plocka ut vissa bitar av sträng

4 svar · 367 visningar · startad av aasah

aasahMedlem sedan mars 20034 471 inlägg
#1

Ursäkta taskig rubrik. Jag har korsordspositionsinfo i strängar med följande format:

A (1-4) : Ett ord i Rad A, från kol 1 till 4
C (1-19) : Ett ord i Rad A, från kol 1 till 19
F (15-23) : Ett ord i Rad A, från kol 15 till 23

1 (A-F) : Ett ord i kol 1, från rad A till F
et.c.

dvs siffrorna är mellan 1 och 99, bokstäverna mellan A och ZZ.

Frågan är: Hur plockar jag enklast ut rad och kolumninfo ur strängen?

För närvarande gör jag följande, och något blir fel:

  $firstBlank = strpos($arr["Pos"], ' '); //Första mellanslaget
  $firstPart = substr($arr["Pos"], 0, $p);
  if (isDigit($firstPart)) {  //Down         1 (A-D)
    $parStart = strpos($arr["Pos"], '(');
    $middle = strpos($arr["Pos"], '-');
    $startRow = substr($arr["Pos"], $parStart + 1, $middle);
    $stoppRow = chr(ord($startRow) + strlen($arr["Svar"])); 
    //....
 }
 else {  //Across    A (1-4)
    $parStart = strpos($arr["Pos"], '(');
    $middle = strpos($arr["Pos"], '-');
    $startCol = substr($arr["Pos"], $parStart + 1, $middle);
    $stoppCol = $startCol + strlen($arr["Svar"]); 
    echo "ps: ".$parStart.", m: ".$middle.", sC: ".$startCol.", pC: ".$stoppCol."<BR>";
    //....
 }

Utskriften visar att stoppCol är helt fel. Dessutom känns det som om det borde gå att göra bättre rent allmänt...

Peter SMedlem sedan dec. 20025 483 inlägg
#2
$str = "F (15-23)";

preg_match('/^([A-Z]{1,2}) \((\d{1,2})-(\d{1,2})\)$/',$str,$matches);

echo "<pre>";
print_r($matches);
echo "</pre>";

?

aasahMedlem sedan mars 20034 471 inlägg
#3

Jooo, men vad händer då när det är tvärtom? Hälften av gångerna står det ju på formen: 1 (A-F)?

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Sorry! :r

preg_match('/^([A-Z]{1,2}|\d{1,2}) \(([A-Z]{1,2}|\d{1,2})-([A-Z]{1,2}|\d{1,2})\)$/',$str,$matches);

Notera att det ej skall vara någon radbrytning ovan.

aasahMedlem sedan mars 20034 471 inlägg
#5

Ah, tack! :) Mycket lättare!

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