2014-02-14 7 views
0

У меня есть следующие Regex в PERL, который нужно преобразовать в PHPПреобразование Perl Regex в 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

Если $ домен является регулярной строкой вы можете предпочитают использовать strpos до Find 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

Смежные вопросы