ID の書式が正しいか(連続した半角英数字であるか)の検証と、ID の抜き出しのため「php 連続 半角英数字 抜き出す」を Qiita に絞り込んでググっても出てこなかったので、自分の備忘録用として。
TL;DR (トークンであるかを検証する関数)
PHP で 7325e63298f853dbd777
といった、アクセストークン/記事 ID/ユーザー ID などの連続半角英数であるか調べるユーザー関数です。
/**
* 文字列が指定された長さの半角英数字トークンか返す.
*
* @param string $id_verify 調べたい値
* @param integer $len トークンの長さ
* @return boolean
*/
function isIdUniformed($id_verify, $len)
{
if (! ctype_alnum($id_verify)) {
return false;
}
return $len === strlen($id_verify);
}
TS;DR (連続半角英数字の抜き出しと検証)
URL から連続した半角英数字の記事 ID を取得し、ID が正しい書式(連続した半角英数字)か確認するサンプル。
サンプル・スクリプト
<?php
// サンプルの記事 ID から ID の長さを取得
$id_sample = 'f4b6807a116a5e94998f';
$id_length = strlen($id_sample);
// 記事 ID の検索パターン
$pattern = '/items\/([0-9a-z]+)/';
// 記事 ID を抜き出す URL
$url = 'https://qiita.com/KEINOS/items/7325e63298f853dbd777';
// 記事 ID の抜き出し
if (! preg_match($pattern, $url, $matches)) {
die('No pattern found.');
}
$id_verify = $matches[1];
// 抜き出した記事 ID の表示
echo 'ID to verify: ', $id_verify, PHP_EOL;
// 検証結果の表示
echo isIdUniformed($id_verify, $id_length) ? 'OK:Uniformed' : 'NG:Irregular format';
// 検証のユーザー関数定義
function isIdUniformed($id_verify, $len)
{
if (! ctype_alnum($id_verify)) {
return false;
}
return $len === strlen($id_verify);
}
結果
ID to verify: 7325e63298f853dbd777
OK:Uniformed
- オンラインで動作確認する @ paiza.IO