Just nu i M3-nätverket
Gå till innehåll

Vill ha värdet mellan A: och ;


Jonas Innala

Rekommendera Poster

Det är så att jag vill ha värdet mellan "A:" och ";" i en sträng och seda sätta det i en variabel. Sedan vill jag ta bort "A:" och ";" i strängen.

Länk till kommentar
Dela på andra webbplatser

Hur ser resten av stängen ut då?

 

Är det typ så här; "A:blah;B:grej;C:ägg;" osv?

 

Då kan du ju göra det A) med reguljära uttryck eller B) med explode().

Förslag A är det bästa kanske, men relativt krångligt, och jag har alldeles för ont i huvudet för att ge mig in på det just nu.

 

Förslag B ser du här:

$sträng = "A:blah;B:grej;C:ägg;";
$matris = explode(";", $sträng);
$färdiga = array();
foreach($matris as $variabel) {
if (!$variabel) continue;
$temp = explode(":", $variabel);
$färdiga[$temp[0]] = $temp[1];
}
print_r($färdiga);

 

Kom gärna med frågor...

 

Länk till kommentar
Dela på andra webbplatser

$variabel = "A:en massa grejer;";

$ny_variabel = substr("$variabel", 2, -1); 

$ny_variabel blir då "en massa grejer"

 

Jag tror att det är det du vill ha, eller?

 

Mmm självklart så beror det på hur hela strängen ser ut och om det är flera förekomster av "X:" samt ";" i den, som Cariad redan skrev.

 

Almir - ...

____________________________________________________________

-Läser Programmet för Informatik med Systemvetenskap på MDH, Västerås.-

[inlägget ändrat 2002-09-19 19:42:02 av TicoRoman (Almir)]

Länk till kommentar
Dela på andra webbplatser

Det är bara i början av strängen det där sedan så ser strängen annorlunda ut typ: A:12; B:4; C:123; sedan är det ett annorlunda grejs som jag ska köra direkt efter jag har tagit ut A:12; B:4; C:123;(dom vill jag ha typ så här $a = 12; $b = 4; $c = 123;). Det är därför jag vill ta bort dom saker i början.

Jag behöver inte använda funktioner som explode för de är bara dem.

 

[inlägget ändrat 2002-09-19 19:58:25 av Jonas Innala]

Länk till kommentar
Dela på andra webbplatser

Hmm...

Ingen bra idé faktiskt. Det går inte att lösa på ett bombsäkert sätt då nämligen, eftersom man aldrig vet vad som kan stå efter den sista variablen. Det kan ju vara ; eller : tecken så man kan ju inte söka efter dem.

 

Min spontana åsikt är att du borde lösa det på ett annat sätt, som är mer praktiskt.

 

Annars får du väl köra en while sats och söka efter ";":

$sträng = "A:12; B:4; C:123; annan text med : och ;";
$mönster = "/([A-Za-z])[^;]); /";
while (preg_match($mönster, $sträng, $träffar)) {
$$träffar[1] = $träffar[2];
$sträng = preg_replace($mönster, "", $sträng, 1);
}

Påpekas bör att jag inte testat koden, så den kan innehålla diverse slarvfel.

 

Länk till kommentar
Dela på andra webbplatser

Lite meckigt om du både vill ta bort strängen och lägga den i en variabel. Men detta lilla exempel borde funka. :)

 

$array = array();

function set_var($val) {
 global $array;

 array_push($array, $val);

 return $val;
}

echo preg_replace("/(A\.*?)\;)/e", "set_var($2)", "mu A:bajs; A:sdgdsg;kood");

 

fast nu hade det visst kommit ett par förslag.. så då ska inte jag va sämre.. här e ett till:

 

$array = array();

function set_var($var, $val) {
 global $array;

 $array[$var] = $val;

 return $val;
}

echo preg_replace("/(([A-Z])\.*?)\;)/e", "set_var($2, $3)", "A:1; B:2; C:3;");

 

..så får du en array med index A, B, C etc som innehåller värdena..

 

 

nu blev det snurrigt...

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...