FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Flitig postare
|
Hur gör jag om jag vill ta bort all text efter eller före ett visst tecken eller ett visst ord med ett reguljärt uttryck i php?
|
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Mycket flitig postare
|
Det är nog bäst att du lär dig lite om reguljära uttryck istället för att fråga varje gång du behöver ett. Sök på google…
preg_match() och preg_replace() osv. är funktionerna du använder i php. |
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Flitig postare
|
Citat:
Att jag skrev "...ett reguljärt uttryck i php" var för att visa att jag som lösning kan acceptera både POSIX-extended och Perl-kompatibla uttryck. Det finns ju lite olika "flavors" när det gäller reguljära uttryck och dessa båda funkar ju i PHP. Har läst ett flertal guider och tutorials men aldrig sett det som jag frågar efter här i något exempel. Någon annan därute som har gjort något liknande? Jag antar att man skall använda sig av "$" för att matcha slutet av strängen, men skall man sätta parentes runt allt man skall matcha med "$"? Måste man matcha newlines i sitt uttryck om det finns ett sådant i slutet av strängen? |
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Mycket flitig postare
|
Ursäkta om du tog illa upp. Din fråga var kort och ospecifik och jag antog att du inte hade någon aning alls och då är det bästa att söka och försöka lite själv. Skriv ett lite mer specifikt inlägg nästa gång (så man vet om du inte vet vilken funktion du ska använda i php, vilket motor du helst ska använda, vilket uttryck som är bäst, osv.) - du skrev en rad som fråga men svarade på mitt inlägg med åtta…
preg_replace('/(Äpple).*$/ui',"$1",$str); borde ju lösa det hela (klippa av slutet, vänd på uttrycket för klippa av början) Undrar om det inte borde finnas något effektivare sätt än regexp:ar för att lösa just detta problem (kommer dock inte på någon smidig funktion just nu). Citat:
|
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Flitig postare
|
point taken, tack för hjälpen!
|
||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Mycket flitig postare
|
En snabbare och enklare lösning (om du inte behöver mer funktionalitet än att bara matcha en sträng) är strstr http://se2.php.net/manual/en/function.strstr.php
Det kanske går ännu snabbare att använda strpos och substr. |
|||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Mycket flitig postare
|
Kan för övrigt påpeka att det kan vara praktiskt att göra just det andi frågar efter:
Kod:
if(preg_match('/^([a-z0-9-])\.jpe?g$/ui',$filnamn,$m)) { echo 'Filnamnet är '.$m[1]; } |
|||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Flitig postare
|
Jo, det är sant att det skulle gå att använda rena stränghanteringsfunktioner, nu är jag dock låst till just reguljära uttryck av lite olika anledningar.
|
||
![]() |
![]() |
Svara |
|
|