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);

注: このメソッドを 1 回呼び出すと、PHP でこのオプションが永久に設定されるため、警告を再度表示したい場合は、後で同じメソッドを異なる引数で使用する必要があります。

今問題自体について:

あなたが使用しているオフセット引数に問題があると思います:

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

次のメソッドからのこの[OFFSET]値:

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

コンテキスト文字列自体よりも大きい可能性があります。オフセット値とコンテキスト文字列をページに出力することで、これを非常に簡単にデバッグできます。

これで問題が解決しない場合は、strpos を使用したときに文字列に文字が見つからないため、このエラーが返される可能性があります。警告が返す行番号に基づいて問題をトラブルシューティングできるように、使用するメソッドをより多くの行に分割してみてください。

お役に立てれば!

于 2013-10-21T21:19:20.673 に答える