Just nu i M3-nätverket
Jump to content

Vill ha värdet mellan A: och ;


Jonas Innala

Recommended Posts

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.

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

$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)]

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...