2014-02-14 154 views
0

我有以下的正則表達式在Perl,我需要轉換爲PHP轉換Perl的正則表達式PHP

if ($referrer_url =~ /\.$domain/) { } 

我目前擁有的在PHP以下與之相匹配的,但我沒有得到相同的結果:

if (preg_match("/\.$domain/", $referrer_url)) { } 

任何人都可以告訴我,如果我有什麼是相同的,或者我錯了嗎?謝謝!

+1

「我沒有得到相同的結果」 - 與結果有什麼不同? – naththedeveloper

回答

3

我只是猜測,你的$域可能包含像mysite.com如果這是你需要在變量中使用preg_quote的情況:

if (preg_match("/\.".preg_quote($domain, "/")."/", $referrer_url)) { } 
+2

實際上,Perl代碼更接近於相當於'if(preg_match(「/\.".$ domain。」/「,$ referrer_url)){}',但它可能應該是你所說的。 – ikegami

2

如果$域是一個普通的字符串,你可以寧願使用strposFind the position of the first occurrence of a substring in a string。這可以達到與使用preg_quote相同的結果,並且易於閱讀。

if (strpos($referrer_url, ".$domain") !== false) { 
} 
+0

'$ domain'在Perl代碼中被視爲正則表達式模式,這是不同的,但這可能是Perl代碼應該做的事情。 – ikegami

+0

或者只是'if(strpos($ referrer_url,「。$ domain」)){...'是的,對我而言,您的解決方案*比'preg_match()'選項更具可讀性。 +1。 – Kenosis