1

我的代码是:

if (!preg_match('^http(s)?://(*)?\.mysite.com(\*)^', $url))
{
  echo "<strong>Error</strong>: Invalid mysite.com link or could shorten link";
} 

我得到了:

Warning: preg_match() [function.preg-match]: 
  Compilation failed: nothing to repeat at offset 12

我正在开发类似于bit.ly的链接缩短器,但我只希望它缩短来自我的特定站点的链接。

我需要一些帮助来解决这个错误。

4

2 回答 2

5

问题在这里:

if (!preg_match('^http(s)?://(*)?\.mysite.com(\*)^', $url))
                              ^

你已经使用了*量词,但你没有指定这个量词应该应用于什么。你可能想.*在那里代替 just *

于 2012-10-22T15:05:21.037 回答
5

星号或星号告诉引擎尝试匹配前面的令牌零次或多次。

if (!preg_match('^http(s)?://(*)?\.mysite.com(\*)^', $url))
                              ↑
                       nothing to match

我相信您的正则表达式模式包含多个错误。我建议你去

if (!preg_match('/^https?:\/\/(?:[a-z\d-]+\.)*mysite.com(?:(?=\/)|$)/i', $url))
于 2012-10-22T15:05:41.637 回答