1

我在 WAMP 中遇到奇怪的错误,但在我的主机上却没有,错误是:

Warning: strpos(): Offset not contained in string in C:\wamp\www\wordpress\wp-content\themes\corpo-child\functions.php on line 292

功能是:

function url( $atts, $content = null ) {
$cnt = substr($content, 0, strpos($content, '/', strpos($content, '/')+2));
$cnt = str_replace('http://www.', '', $cnt);
$cnt = str_replace('http://', '', $cnt);
$cnt = str_replace('www.', '', $cnt);
$cnt = str_replace('embed.', '', $cnt);
    return '<div id="url"><a href="/external/?link='.$content.'" target="_blank">'.$cnt.'</a></div>';
}

第 292 行是:

$cnt = substr($content, 0, strpos($content, '/', strpos($content, '/')+2));
4

1 回答 1

0

这似乎是一个警告。我猜你在 WAMP 中启用了警告,你可以使用error_reporting();禁用它们。方法:

// Report simple running errors
error_reporting(E_ERROR | E_PARSE);

注意:调用此方法一次将在 PHP 中永久设置此选项,因此如果您想再次显示警告,您必须稍后使用具有不同参数的相同方法。

现在关于问题本身:

我认为这是您使用的 offset 参数的问题:

$cnt = substr($content, 0, [OFFSET]);

[OFFSET]值来自以下方法:

strpos($content, '/', strpos($content, '/')+2)

可能大于上下文字符串本身。您可以通过在页面上打印偏移值和上下文字符串来非常轻松地进行调试。

如果这不能解决问题,可能是因为使用 strpos 时在字符串中未找到字符而返回此错误。您应该尝试分解在更多行中使用的方法,以便根据警告返回的行号解决问题。

希望这可以帮助!

于 2013-10-21T21:19:20.673 回答