webForumDet fria alternativet

Tecken mellan i sträng

PHP

16 svar · 368 visningar · startad av learn

Medlem sedan jan. 20051 130 inlägg
Frågan#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!

Medlem sedan juni 20015 009 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

Medlem sedan jan. 20051 130 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... :)

Medlem sedan mars 20025 907 inlägg
#4
<?php
$str = 'börjanABCabc123=/?slut';
echo preg_replace("'(början)(.*?)(slut)'is","$1$3",$str);
?>
Medlem sedan jan. 20051 130 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?

Medlem sedan mars 20025 907 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

Medlem sedan jan. 20051 130 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

Medlem sedan juni 20015 009 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. :)

Medlem sedan jan. 20051 130 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..???

Medlem sedan juni 20006 031 inlägg
#10

Jag skulle sätta den i en session.

Medlem sedan jan. 20051 130 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??

Medlem sedan juni 20006 031 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.

Medlem sedan jan. 20051 130 inlägg
#13

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

Medlem sedan juni 20015 009 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']);

:)

Medlem sedan mars 20034 471 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);

???

Medlem sedan juni 20015 009 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 :)

Medlem sedan jan. 20051 130 inlägg
#17

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

285 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
154 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
154 ms — ändringar (db)