---
title: "Plocka ut vissa bitar av sträng"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/138002-plocka-ut-vissa-bitar-av-sträng"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "aasah"
published: "2005-11-21T10:15:34.000Z"
updated: "2005-11-21T13:55:51.000Z"
replies: 4
views: 369
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/138002-plocka-ut-vissa-bitar-av-sträng"
---

# Plocka ut vissa bitar av sträng

## #1 — aasah, 2005-11-21T10:15Z

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:

```php
  $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...

Permalänk: https://www.webforum.nu/p/138002

## #2 — Peter S, 2005-11-21T10:42Z

```php
$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>";
```

 ?

Permalänk: https://www.webforum.nu/p/1713402

## #3 — aasah, 2005-11-21T12:58Z

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)?

Permalänk: https://www.webforum.nu/p/1713470

## #4 — Peter S, 2005-11-21T13:06Z

Sorry!  :r 

```php
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.

Permalänk: https://www.webforum.nu/p/1713479

## #5 — aasah, 2005-11-21T13:55Z

Ah, tack! :) Mycket lättare!

Permalänk: https://www.webforum.nu/p/1713495

---

Tråden på webben: https://www.webforum.nu/amne/php/138002-plocka-ut-vissa-bitar-av-sträng
