---
title: "Någon kanske skulle kunna hjälpa mig med detta"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/156038-någon-kanske-skulle-kunna-hjälpa-mig-med-detta"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "vic"
published: "2007-01-16T17:36:11.000Z"
updated: "2007-01-17T11:26:47.000Z"
replies: 7
views: 343
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/156038-någon-kanske-skulle-kunna-hjälpa-mig-med-detta"
---

# Någon kanske skulle kunna hjälpa mig med detta

## #1 — vic, 2007-01-16T17:36Z

Strängarna ser ut nått sånt här:

```
testa<,Tamburin,Violin,,,,,,|rasss<,Tamburin,Violin,,,,,,|
```

De skall sedan exploderas med först \| och sedan med \> för att slutligen exploderas med , Det ser alltså ut så här:

```
 NAMN < instrument , instrument , instrument | NAMN < instrument , instrument
```

Jag skulle dock behöva ta bort alla dom kommatecken som inte står före ett instrument. Jag antar att det funkar med nått str_replace eller preg_replace men vad är det jag skall ta bort? Om jag kör med str_replace(',,', '', $string) så finns ju risken att det tas bort kommatecken mellan två instrument om dom inte är direkt efter varandra 

Om någon skulle vilja ta sig tid vore jag oerhört tacksam.
// Vic

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

## #2 — nitro2k01, 2007-01-16T19:00Z

```
<pre><?PHP

$instruments = 'testa<,Tamburin,Violin,,,,,,|rasss<,Tamburin,Violin,,,,,,|';
$instruments = preg_replace('/\|$/', '', $instruments);
$instrarray = explode('|', $instruments);

$instrarray2=Array();

foreach ($instrarray as $i ){
        $split=explode('<', $i);
        $instrarray2[$split[0]]=preg_split('/,+/', $split[1], -1, PREG_SPLIT_NO\
_EMPTY);
}
// Skriv ut arrayen:
print_r($instrarray2);

echo '<br /><br />';
echo $instrarray2['testa'][1]; // Ska skriva ut violin

?></pre>
```

There we go! Detta är min experimentkod, hoppas det är någorlunda vad du hade tänkt dig.

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

## #3 — vic, 2007-01-16T19:21Z

Jisses de ser fint ut :) Kan tyvärr inte testa det från datorn jag nu sitter vid.

Det enda jag dock behöver är något som tar bort de kommatecken som inte föregås av ett instrumment. Efter det kommer strängen att sparas i databasen.

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

## #4 — nitro2k01, 2007-01-16T19:29Z

Jaha, då missförstod jag. Du vill alltså ha en funktion som tar det som står i den övre rutan och returnerar det som står i den undre?

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

## #5 — vic, 2007-01-16T19:38Z

Om du syftar på kodrutorna i mitt första inlägg så är svaret: JA :)

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

## #6 — nitro2k01, 2007-01-16T20:28Z

kod\<pre\>\<?PHP

$instruments = 'testa\<,Tamburin,Violin,,,,,,\|rasss\<,Tamburin,Violin,,,,,,\|';
$instruments = preg_split('/\\\|/', $instruments, -1, PREG_SPLIT_NO_EMPTY);
foreach($instruments as $k =\> $v){
        $split=explode('\<', $v);
        $split\[1\]=implode(" , ", preg_split('/,+/', $split\[1\], -1, PREG_SPLIT_NO_EMPTY));
        $instruments\[$k\]=$split\[0\] . " \< " . $split\[1\];
}
$instruments=implode(" \| ", $instruments);
print_r($instruments);
?\>\[kod\]Nu har jag dock tagit dig på orden, så koden accepterar inga mellanslag i indata. (Då blir det inte som tänkt)

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

## #7 — Peter S, 2007-01-16T21:25Z

Eller

```php
$str = preg_replace('/,(?=[^\w])/','',$str);
```

om $str är strängen i fråga.

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

## #8 — vic, 2007-01-17T11:26Z

Utmärkt grabbar  (y)

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

---

Tråden på webben: https://www.webforum.nu/amne/php/156038-någon-kanske-skulle-kunna-hjälpa-mig-med-detta
