2011-11-05 23 views
14

Jestem całkiem nowy w wyrażeniach regularnych. Potrzebuję oczyścić ciąg wyszukiwania ze spacji na początku i na końcu. Przykład: „szukaj string” Wynik: „szukaj ciąg”Usuwanie spacji z początku i końca ciągu

mam wzór, który działa jako rozwiązanie javascript, ale nie mogę zmusić go do pracy na PHP przy użyciu preg_replace:

Javascript patern, który działa:

/^[\s]*(.*?)[\s]*$/ig 

Mój przykład:

$string = preg_replace('/^[\s]*(.*?)[\s]*$/si', '', " search string "); 
print $string; //returns nothing 

na analizować to mówi mi, że g nie został rozpoznany, więc musiałem REMOV e i zmień ig na si.

+0

możliwe duplikat [Usuń dodatkową przestrzeń na końcu łańcucha przy użyciu preg \ _replace ] (http://stackoverflow.com/questions/4787219/remove-extra-space-at-the-end-of-string-using-preg-replace) –

+0

To jest nieco inne pytanie niż http: // stackoverflow. com/questions/4787219/remove-extra-space-at-the-end-of-string-using-preg-replace, który pyta, jak usunąć tylko spację na końcu łańcucha, gdzie moje pytanie dotyczy zarówno początku, jak i końca. Rozwiązanie tego problemu różni się od pytania zadanego przez @daron – Alex

Odpowiedz

47

Jeśli jest to tylko biała przestrzeń, dlaczego nie po prostu użyć trim()?

+1

DUH! dziękuję: D całkowicie zapomniałem o tej funkcji – Alex

+0

I nawet nie myśl o używaniu do tego celu regex. :) – GolezTrol

+0

Nie będę, przycinanie() jest najlepszym rozwiązaniem :) – Alex

5

Tak, należy użyć trim() Chyba .. Ale jeśli naprawdę chcesz tego wyrażenia regularnego, to jest tutaj:

((?=^)(\s*))|((\s*)(?>$)) 
+1

dzięki temu rozwiązaniu działa również: preg_replace ('/^((? = ^) (\ S *)) | ((\ s *) (?> $))/si ',' ', "asd asd"); – Alex

Powiązane problemy