webForumDet fria alternativet

Ta bort slutet av en sträng

PHP

9 svar · 537 visningar · startad av learn

Medlem sedan jan. 20051 130 inlägg
Frågan#1

Jag har en sträng som kan se ut enligt följande:

första/andra/tredje/

Hur gör jag för att ta bort "tredje/", obs ordet "tredje" kan vara vad som helst men slashen delar alltid upp strängen i "sektioner". Alltså hur tar man bort den sista sektionen?

Medlem sedan aug. 20002 975 inlägg
#2

Testa med

$string = preg_replace("/[^\/]+(\/)?$/", "", $string);
Medlem sedan jan. 20051 130 inlägg
#3

ok, kan man ha en variabel som "sökord"?

preg_replace( $str, "", $str2 ) funkar ju inte, hur ska man skriva?

Medlem sedan aug. 20002 975 inlägg
#4

Hur menar du att du skulle använt ett sökord ?

Medlem sedan jan. 20051 130 inlägg
#5

$str menar jag är "sökordet", men jag löste det på egen hand. En annan fråga, hur gör man ifall det är en slash som skall bytas ut.

Alltså om slashen är sökordet ;)

Medlem sedan aug. 20002 975 inlägg
#6

Har inget som helst grepp om vad du försöker göra.

Är det något på det här hållet du söker?

// Ditt sökord, kommer från något för mig okänt ställe
$sokord = 'tredje';

$search = $sokord == '*' ? '[^\/]+' : preg_quote($sokord, '/');

$string = preg_replace("/$search(\/)?$/", "", $string);

Då kan du använda '*' för att ta bort tredje sektionen, oberoende av innehåll.

Kan du utveckla lite vad du försöker göra, så kanske du kan få lite bättre hjälp.

Medlem sedan jan. 20051 130 inlägg
#7

Ah, sorry. jag tar det från början.

Jag försöker göra ett mappsystem. Det fungerar bra att "gå in i" mappar, alltså stega nedåt i hierarkin. Nu vill jag även kunna stega uppåt, dvs det ska finnas en länk som skickar användaren till den mapp som den aktuella mappen ligger i.

preg_replace ska då ta bort en bit av QUERY_STRING:en. Fast str_replace fungerar ju lika bra.

Medlem sedan aug. 20002 975 inlägg
#8

Och vad är ditt problem ?
Det verkar ju fungera för dig, om jag förstår rätt.

Medlem sedan mars 20034 471 inlägg
#9

Problemet är väl att sökordet inte alltid är samma, antar jag.

$str = "första/andra/tredje";
$lastSlashPos = strrpos($str, '/'); 
substr($ip, 0, $lastSlashPos);

$lastSlashPos hittar / mellan andra och tredje.
substr plockar ut allt före denna slash.

Medlem sedan jan. 20051 130 inlägg
#10

precis, tack så mkt!

264 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)