[PHP] 纯文本查看 复制代码 <?php
header('Content-Type: application/json; charset=utf-8');
$strname = $_GET['str'];
// 获取字数并四舍五入
function strnum($str) {
// 取字符串长度
$num1 = mb_strlen($str);
// 取中文字数
$num2 = preg_match_all("/([\x80-\xff]){1}/", $str, $arrCH)/3;
if ($num1 - $num2 > 0) {
$num3 = round($num2 + ($num1 - $num2)/2);
} else {
// 没有英文数字符号直接赋值
$num3 = $num1;
}
return $num3;
}
// 构造响应数据的初始值
$response = [
'code'=> null,
'data' => null,
'msg' => null
];
// 检查传入的字符串是否为空或不是六字
if (empty($strname)) {
$response['code'] = '400';
$response['msg'] = '输入不能为空';
} else if (strnum($strname) != 6) {
$response['code'] = '401';
$response['msg'] = '请输入六个字';
} else {
// 获取传入的字符串并过滤非法字符
$input_str = preg_replace('/[^A-Za-z0-9\x{4e00}-\x{9fa5}]/u', '', $strname);
// 关系型数组,用于将中文映射为相应拼音
$lookup_table = [
'你' => 'ni',
'好' => 'hǎo',
'易' => 'yì',
'语' => 'yǔ',
'言' => 'yán'
];
// 生成ID
$data = '';
$split_input_str = preg_split('//u', $input_str, -1, PREG_SPLIT_NO_EMPTY);
$is_replaced = false;
foreach ($split_input_str as $char) {
if (array_key_exists($char, $lookup_table)) {
$data .= $lookup_table[$char];
$is_replaced = true;
} else {
$data .= $char;
}
}
if (!$is_replaced) {
// 如果从关系型数组中寻找不到,则输出无法生成替换结果
$response['code'] = '402';
$response['msg'] = '此内容不可没有适配';
} else {
$response['code'] = '200';
$response['msg'] = '生成成功';
$response['data'] = $data;
}
}
// 输出响应数据
echo json_encode($response, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
?>
如上代码:
比如str=你好易语言啊
第一次输出 ni好易语言啊
第二次输出 你hao易语言啊
依次类推,也可以替换两个或者三个,最后一次全部替换
补充内容 (2023-5-16 22:44):
用gpt笨办法解决了 |