0

PHPのシリアル化に問題があります。「」が含まれていると、余分な文字スペースが表示されます。たとえば、6文字の場合は7文字になります。

   $episodes_count = sizeof($episode_title);
$episodes = array();
$content = '';

for ($i = 0; $i <= $episodes_count; $i++) {
    $title = htmlspecialchars($episode_title[$i], ENT_QUOTES);
    $airdate    = $episodes_airdates[$i];
    $season    = $episodes_seasons[$i];
    $number    = $episodes_numbers[$i];
    $plot    = $episodes_plot[$i];

    // check if empty
    if (!empty($title) && !empty($number ) && !empty($plot )) {
        $episodes[] = array(
            'title' => $title, 
            'airdate' => $airdate,
            'season' => $season,
            'number'   => $number,
            'plot'   => $plot,
        );
    }
}

// Serialized Episodes in case they exist, if not, remove the goal post
if ( sizeof($episodes) > 0 ) {
    $content = str_replace("'", '%',serialize($episodes));
}


update_post_meta($post_id, 'episodes', $content);
}
4

1 に答える 1

2

シリアル化されているように見えるデータをwordpressに渡します-wordpressupdate_post_metaで問題が発生する可能性があり、保存および取得中にデータが破損します。

これを防ぐには、文字列にプレフィックスを付けて、シリアル化されていないように見せたり、文字列全体をエンコードしたりすることができます(例: 。) base64_encode。これにより、WordPressやその他のコンポーネントがエンコーディングの問題のために値を変更するのを防ぐことができます。

于 2012-04-18T08:07:52.240 に答える