トリップ作成

2ch互換のトリップ文字列を作成して戻す関数です。
ただし,トリップ文字列に半角英数以外が含まれる場合は,異なる内容※となります。
(※crypt関数の仕様による)

コード

/**
 * 名前に含まれる #以降の文字列をトリップ文字列に変換し戻す
 * 例: テスト#1234 → テスト ◆tr.t4dJfuU
 *
 * @param string $name 名前
 * @return string
 */
function TripFunction($name)
{
    // 最初から含まれている◆を◇に置換
    $name = str_replace("◆", "◇", $name);

    // #以降を取得
    preg_match("/\#(.+)$/", $name, $match);
    $key = $match[1];

    // #以降が存在しない
    if (!$key) {
        return $name;
    }

    // saltを取得
    $salt = substr($key, 1, 2);
    $trip = crypt($key, $salt);

    // トリップ生成
    $trip = preg_replace("/^.*?(.{10})$/", "\\1", $trip);
    $ret = preg_replace("/\#(.+)$/", " ◆".$trip, $name);

    return $ret;
}

サンプル

$name = 'テスト#1234';
echo TripFunction($name);

結果

テスト ◆tr.t4dJfuU