2010-06-29 16 views
15

Poszukuję słów kluczowych w łańcuchu za pomocą wyrażenia regularnego. Działa dobrze dla wszystkich słów kluczowych, z wyjątkiem tego, który zawiera ukośnik w przód: "czas/emituj".Wyrażenie regularne i ukośnik w przód

Nawet przy użyciu preg_quote($find,'/'), który ucieka, ja wciąż dostaję komunikat:

Unknown modifier 't' in /frontend.functions.php on line 71 

Jeśli mogę wydrukować wzór znalezienia, to pokazuje /time\\/emit/. Bez preg_quote pokazuje /time/emit/ i oba zwracają ten sam komunikat o błędzie.

Przydałoby się trochę wiedzy.

Odpowiedz

31

Spróbuj rozpocząć i zakończyć wyrażenie regularne z innego znaku niż/

Osobiście używam `

Widziałem ludzi przy użyciu #

myślę, że większość znaków są dobre. Możesz przeczytać więcej na ten temat tutaj: http://pl.php.net/manual/en/regexp.reference.delimiters.php

Jak to:

preg_match('#time/emit#', $subject); // instead of /time/emit/ 

Ujmując to w inny sposób: Twój zmienna $find powinna zawierać raczej # czas/emitują # niż/czasu/emitują/

+0

tył kleszcz załatwiło sprawę! – pixeline

+0

Eleganckie rozwiązanie, które rozwiązało wszystkie moje bóle głowy za pomocą ukośnego charakteru. – Seth

0

trochę kodu?

"wyrażenie" dla tego konkretnego wyrażenia powinno wyglądać jak "/ czas/emituj". Za pomocą zestawu słów kluczowych może być skuteczniejsza metoda, więc zobaczenie, co robisz, byłoby dobre.

2

wygląda na to, że masz coś już od niej ucieczki ..

preg_quote('time/emit') // returns time\/emit 
preg_quote('time\/emit') // returns time\\/emit 

jak hack można po prostu zrobić:

preg_quote(stripslashes($find)) // will return time\/emit 
0

to powinno działać:

$a="Hello////////"; 
$b=str_replace($a,"//","/"); 
echo $b;