webForumDet fria alternativet

Tecken mellan i sträng

16 svar · 368 visningar · startad av learn

learnMedlem sedan jan. 20051 143 inlägg
#1

Bra rubrik va... ;)

Vad jag vill veta är hur man gör för att ta bort ett okänt antal tecken mellan två kända ord i en sträng?

Ex. Ta bort allt mellan "början" och "slut" i strängen "börjanABCabc123=/?slut". Resultat: "börjanslut"

Tack så mkt!

QimenMedlem sedan juni 20013 568 inlägg
#2

Du kan ju alltid använda substr för att plocka ut dem och sedan lägga ihop dem. Är för trött just nu för att orka komma på någon bättre lösning. :p

learnMedlem sedan jan. 20051 143 inlägg
#3

Det skulle inte funka då strängen kan vara längre och det är bara det som är mellan de två givna orden som skall tas bort.

Jag vet att det finns funktioner som kan vara användbara i detta sammanhang (preg_replace mm) men jag vet inte hur man använder dem. Med andra ord vill jag gärna ha ett exempel... :)

PeeerMedlem sedan mars 20025 362 inlägg
#4
<?php
$str = 'börjanABCabc123=/?slut';
echo preg_replace("'(början)(.*?)(slut)'is","$1$3",$str);
?>
learnMedlem sedan jan. 20051 143 inlägg
#5

Tack Peeer! Men nu måste du förklara vad du gjorde. Jag må vara nybörjare, men jag vill lära mig :) Vad står tex "$1$3" för?

PeeerMedlem sedan mars 20025 362 inlägg
#6

Kort och gott, du delar upp strängen i tre delar som sedan blir till tre variabler. Varje del är innesluten i parenteser.
(början)(.*?)(slut). (början) blir till $1, (slut) blir till $3 och (.*?) (som innehåller allting mellan de två andra strängarna) blir till $2. Typ :P

learnMedlem sedan jan. 20051 143 inlägg
#7

Jasså! Tänk att man kan aldrig sluta bli imponerad... otroligt! Tack för förklaringen, det där kommer jag kunna leva länge på! :birp

QimenMedlem sedan juni 20013 568 inlägg
#8

learn skrev:

Det skulle inte funka då strängen kan vara längre och det är bara det som är mellan de två givna orden som skall tas bort.

Jag vet att det finns funktioner som kan vara användbara i detta sammanhang (preg_replace mm) men jag vet inte hur man använder dem. Med andra ord vill jag gärna ha ett exempel... :)

Det går ändå, det är bara till att räkna in bakifrån istället. Men Peeer's sätt är mycket smartare. :)

learnMedlem sedan jan. 20051 143 inlägg
#9

För att spara på wF:s krafter så spinner jag vidare på tråden.

Here we go... Om jag nu vill att den där sträng-biten ska följa med i URL:en över hela sidan jämt och ständigt, finns det ngn genväg eller måste jag i samtliga länkar skriva in $trimmadStrang..???

PeddaMedlem sedan juni 20004 880 inlägg
#10

Jag skulle sätta den i en session.

learnMedlem sedan jan. 20051 143 inlägg
#11

ja det kanske är en bra idé. Hur är pålitligheten vad gäller sessioner generellt sett? Är det något speciellt som man bör tänka på? Hur många sessioner kan man ha på en sida samtidigt, är det kapacitetkrävande??

PeddaMedlem sedan juni 20004 880 inlägg
#12

Måste säga att pålitligheten är hög och att det inte finns några större risker.
Det man bör tänka på är att inte döpa en sessionsvariabel till ett namn som används av en annan variabel. Ett tips är att döpa alla sessionsvariabler med sess_ i början. T ex sess_username så det inte förväxlas med en annan variabel som kan heta $username.
Har aldrig hört att det är ett begränsat antal sessioner eller att det skulle vara krävande på kapaciteten.

learnMedlem sedan jan. 20051 143 inlägg
#13

ok, schysst! då är det bara att köra med andra ord!

QimenMedlem sedan juni 20013 568 inlägg
#14

Det kan även vara smart att spara sessionerna i en array, dels för man vet direkt när det är en session och dels för att om man vill ta bort sessionen kör man bara unset på "huvudet".

$_SESSION['moo']['anv'] = "admin";
$_SESSION['moo']['id'] = 4;

// För att ta bort båda.
unset($_SESSION['moo']);

:)

aasahMedlem sedan mars 20033 451 inlägg
#15

Qimen skrev:

Det kan även vara smart att spara sessionerna i en array, dels för man vet direkt när det är en session och dels för att om man vill ta bort sessionen kör man bara unset på "huvudet".

$_SESSION['moo']['anv'] = "admin";
$_SESSION['moo']['id'] = 4;

// För att ta bort båda.
unset($_SESSION['moo']);

:)

Vad är det för skillnad på det och:

$_SESSION['anv'] = "admin";
$_SESSION['id'] = 4;

// För att ta bort båda.
unset($_SESSION);

???

QimenMedlem sedan juni 20013 568 inlägg
#16

Det kanske fungerar nu, har för mig det inte fungerade förut. Men iaf, då avsätter man alla sessioner, på "mitt" sätt kan man avsätta grupper. :p :)

learnMedlem sedan jan. 20051 143 inlägg
#17

ok, men i mitt fall blir det nog endast till att avsätta alla samtidigt.

Genererad på 365 ms · cache AV · v20260730165559-full.f96bc7eb