警告:substr()期望参数3为long,字符串为

时间:2016-04-07 14:30:22

标签: php wordpress twitter

当我尝试在页面上显示我的最新推文时,我收到此错误。

该行的代码是:

$twitts = unserialize( base64_decode( $twitts ) );
foreach ($twitts as $twit) {
    ?>
    <p><i class="fa fa-twitter"></i><a rel="nofollow" target="_blank" href="<?php print esc_url('https://twitter.com/'.$twit->user->screen_name); ?>"><span>@<?php print esc_html($twit->user->screen_name); ?></span></a>
    <?php 
    $twit->text = substr(esc_html($twit->text), 0, $twitter_symbol_count); 
    print $twit->text . '...'; ?></p>
    <?php
}
?>

我做错了什么?!?! :(

2 个答案:

答案 0 :(得分:0)

您的错误消息非常清楚。参数3($twitter_symbol_count)必须很长并且是字符串。

如果您在此处阅读documentation,则可以看到参数2&amp; 3是int

如果$twitter_symbol_count可以投放到int,您可以使用此代码:

$twit->text = substr(esc_html($twit->text), 0, intval($twitter_symbol_count));

请使用var_dump($twitter_symbol_count);更新您的问题,以便在不起作用的情况下给您一个确切的答案。

编辑

您的参数$twitter_symbol_count必须是数字的。不能是string "yes"。你想在这做什么?

答案 1 :(得分:0)

我会这样做:

if(ctype_digit(trim($twitter_symbol_count)) || is_int($twitter_symbol_count))
{
    $twitter_symbol_count = (int)trim($twitter_symbol_count);
}
else
{
    $twitter_symbol_count = strlen(esc_html($twit->text));
}

$twit->text = 
    substr
    (
        esc_html
        (
            $twit->text
        ),
        0,
        $twitter_symbol_count
    );