检查 PHP 中是否为多字节字符串

2023-11-21

我想检查 PHP 上是否是字符串类型多字节。 知道如何实现这一点吗?

Example:

<?php!
$string = "I dont have idea that is what i am...";
if( is_multibyte( $string ) )
{
    echo 'yes!!';
}else{
    echo 'ups!';
}
?>

也许(规则8字节):

<?php
if( mb_strlen( $string ) > strlen() )
{
    return true;
}
else
{
    return false;
}
?>

I read: 可变宽度编码 - WIKI and UTF-8 - 维基百科


有两种解释。首先,每个字符都是多字节的。第二是字符串至少包含一个多字节字符。如果您对处理无效字节序列感兴趣,请参阅https://stackoverflow.com/a/13695364/531320了解详情。

function is_all_multibyte($string)
{
    // check if the string doesn't contain invalid byte sequence
    if (mb_check_encoding($string, 'UTF-8') === false) return false;

    $length = mb_strlen($string, 'UTF-8');

    for ($i = 0; $i < $length; $i += 1) {

        $char = mb_substr($string, $i, 1, 'UTF-8');

        // check if the string doesn't contain single character
        if (mb_check_encoding($char, 'ASCII')) {

            return false;

        }

    }

    return true;

}

function contains_any_multibyte($string)
{
    return !mb_check_encoding($string, 'ASCII') && mb_check_encoding($string, 'UTF-8');
}

$data = ['東京', 'Tokyo', '東京(Tokyo)'];

var_dump(
    [true, false, false] ===
    array_map(function($v) {
        return is_all_multibyte($v);
    },
    $data),
    [true, false, true] ===
    array_map(function($v) {
        return contains_any_multibyte($v);
    },
    $data)
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查 PHP 中是否为多字节字符串 的相关文章

  • 压缩 zend Framework 2 的 html 输出

    我目前正在 PHP 5 4 4 上使用 Zend Framework 2 beta 开发个人 web 应用程序以用于自学目的 我想知道是否可以在 html 输出发送到浏览器之前拦截它 以便通过删除所有不必要的空格来缩小它 我怎样才能在ZF2
  • 从 FilterControllerEvent 监听器重定向到另一个 Symfony 路由

    我正在尝试设置一个 kernel controller 侦听器 以便在函数返回 true 时重定向到另一个路由 我有可用的路线 但无法使用此路线设置控制器 event gt setController 我收到以下错误 FilterContr
  • php表格:每行显示3个单元格[重复]

    这个问题在这里已经有答案了 我看这里 数组放入每行 5 个单元格的表格中 https stackoverflow com questions 9099568 array into a table with 5 cells in each r
  • 关于加拿大短信网关提供商的建议[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我很好奇 如果我能够接受传入的短信到某个号码 然后将其传递给 PHP 中的服务器端应用程序 会带来多少麻烦 金钱 我最终会通过电子邮件地址发回短信 有
  • session_regenerate_id 没有创建新的会话 id

    我有一个脚本 旨在完成当前会话并开始新的会话 我使用了一段代码 它在我的开发计算机上运行良好 但是 当我将其发布到生产服务器时 会话 ID 始终保持不变 以下是我重新启动会话的代码 session start SESSION array P
  • 使用 PHP 对 ASP.NET 成员身份中的用户进行身份验证

    我在尝试使用 PHP 针对现有 ASP NET 成员资格数据库对用户进行身份验证时遇到一些问题 我在网上搜索过 发现现有的答案似乎对我不起作用 即 public static function Hash password salt deco
  • 如何将 PHPMailer 与 Codeigniter 3 集成

    嗨 我正在尝试使用PHPMailer 库 https github com PHPMailer PHPMailer来自我的 Codeigniter 应用程序中的 GitHub 我下载了代码并解压到我的application library文
  • Magento补丁安装失败

    从以下位置下载并运行 Magento PHP 5 4 支持补丁 Magento CE v1 7 0 0 1 7 0 2 时http www magentocommerce com download http www magentocomme
  • strlen()==0 和empty()之间有区别吗?

    我正在查看其他人编写的一些表单验证代码 我看到了这个 strlen 0 当测试表单变量是否为空时 我使用empty 功能 一种方法比另一种方法更好吗 它们在功能上等效吗 strlen是获取字符串中的字符数 同时empty用于测试变量是否为空
  • 将字符串连接到python列表中所有元素的末尾

    我想知道如何将字符串连接到列表中所有元素的末尾 例如 List1 1 2 3 string a output 1a 2a 3a 在列表理解和使用中重建列表str format在两个参数上 gt gt gt string a gt gt gt
  • 使用日语“Enter”键进行搜索功能

    我在日语方面遇到了问题 我有一个允许用户搜索数据的表单 当用户输入要搜索的字符串并按 Enter 键时 搜索功能就会执行 我的代码是 formSearch input keyup function event var key event c
  • Android GCM 服务器的 API 密钥

    我有点困惑我应该为 GCM 服务器使用哪个 API 密钥 在文档中它说使用 android api 密钥 这对我不起作用并且总是给出未经授权的 http developer android com google gcm gs html ht
  • 如何编写在正文中包含锚标记的 Zend Framework URL?

    使用 Zend Framework 中设置的标准 MVC 我希望能够显示始终具有锚点的页面 现在我只是在 phtml 文件中添加一个带有 anchor 的无意义参数
  • 删除Android所有语言中的字符串

    我有一个包含多个翻译的应用程序 我想删除一些字符串 我怎样才能重构并删除它们一次 例如在默认情况下strings xml文件并自动将删除传播到其他翻译的其他 strings xml 文件 您可以通过 Android Studio 中的 翻译
  • 将数组拆分为特定数量的块

    我知道array chunk 允许将数组拆分为多个块 但块的数量根据元素的数量而变化 我需要的是始终将数组拆分为特定数量的数组 例如 4 个数组 以下代码将数组分为 3 个块 两个块各有 2 个元素 1 个块有 1 个元素 我想要的是将数组
  • 字符串列表,获取n个元素的公共子串,Python

    我的问题可能类似于this https stackoverflow com questions 37514193 count the number of occurrences of n length not given string in
  • PHP文件上传

    如果我想在文件名转到服务器的永久位置 而不是临时位置 之前更改文件名 我该如何执行此操作 代码如下
  • mysqli bind_param 中的 NULL 是什么类型?

    我正在尝试将参数绑定到 INSERT INTO MySQLi 准备好的语句 如果该变量存在 否则插入 null 然后我知道 type variable i corresponding variable has type integer d
  • PHP cURL 在本地工作,在 AWS 服务器上出现错误 77

    最新更新 脚本作为管理员用户通过 SSH shell 作为 php script php 成功运行 当由 nginx 用户运行时 curl 命令无法执行 https 请求 所以我猜测这是nginx用户无法正确使用curl的问题 我已经检查了
  • “pdo_mysql”已禁用,我无法启用它。我在 iMac 7.1 OSX 10.6.8 上安装了 MAMP v. 3.0.4

    pdo mysql 已禁用 我无法启用它 我在 iMac 7 1 OSX 10 6 8 上安装了 MAMP v 3 0 4 在我的 phpinfo 页面上 我可以看到唯一启用的 PDO 是 sqlite 如果我查看 php 5 5 10 扩

随机推荐

  • 为什么我无法使用 LWP::Simple 获取维基百科页面?

    我正在尝试使用获取维基百科页面LWP 简单 但他们不会回来了 这段代码 usr bin perl use strict use LWP Simple print get http en wikipedia org wiki Stack ov
  • Python dict.get() 引发 KeyError

    我在这里迷路了 Python 2 7 我有一本字典mt 我用get 方法 文档中说 get key default 如果 key 位于则返回 key 的值 字典 否则默认 如果没有给出默认值 则默认为 无 因此该方法永远不会引发KeyErr
  • AngularJS:观察高度变化的更好方法

    我遇到了旧的可变高度导航问题 Aposition fixes顶部导航和内容margin top naviHeight以下 当数据异步加载时 导航可以改变高度 因此内容的边距也必须随之改变 我希望这是独立的 因此 没有加载数据的代码 而仅在涉
  • 如果锁定的对象内部发生异常,该对象是否会保持锁定状态?

    在 C 线程应用程序中 如果我要锁定一个对象 比如说队列 如果发生异常 该对象是否会保持锁定状态 这是伪代码 int ii lock MyQueue MyClass LclClass MyClass MyQueue Dequeue try
  • 使用 OpenSSL 读取证书文件时出现 Ruby 错误

    我正在尝试做一个简单的OpenSSL X509 Certificate new File read testuser p12 来自IRB与红宝石 1 8 7 或 1 9 2 两者结果相同 我得到的错误是OpenSSL X509 Certif
  • 使用包含空格的文件名的 GNUMake 最可靠的方法是什么?

    我想使用 GNUMake 运行基于规则的 makefile 该文件在目录结构中 在 Windows 文件系统上 构建一组 C 文件 根目录 部分子目录和部分文件包含空格 示例文件 C Documents and Settings
  • 命名和未命名匿名 Javascript 函数之间的差异

    通常 在 Javascript 中 当我想将匿名 内联函数作为参数传递给另一个函数时 我会执行以下操作之一 someFunctionCall function someFunctionCall gt 然而 我最近继承了一个使用的代码库nam
  • 提示与密码 EditText 右侧对齐

    我正在研究阿拉伯语并开展活动 我希望用户名和密码的提示从右侧开始 并且从左侧开始输入没有问题 但在我的用户界面中 我希望提示位于右侧 但是当我为 EditText 添加 inputType 时 提示会移到左侧 我尝试以编程方式解决它 但它不
  • 从 postgres 中的路径中分离出文件名

    我有一个包含 Windows 文件路径的字段 如下所示 fs1 foo bar snafu txt c this is why i drink snafu txt fs2 bippity baz zip fs3 boppity boo ba
  • Haskell 使用 -O2 进行编译会大大增加内存使用量

    当使用 ghc 不使用任何标志进行编译时 这个简单的程序在恒定内存空间中运行 import Data List f x x x g a foldl f a 1 1073741824 1 main do putStrLn show foldl
  • 在 Android 中使用特定于构建的 aaptOptions(用于排除特定资产文件/文件夹)

    一直在开发 Android Webview 应用程序 我刚刚开始使用其中的 node modules 文件夹 所以很自然地我做了一些关于如何排除它的研究 最终得到了这个问题在这里 尝试了一些答案 最适合我的答案是关于 aaptOptions
  • 推送通知在 iOS 10 上不工作

    安装 iOS 10 的新更新后 推送通知不起作用 而相同的代码实现适用于 iOS 9 iOS 10 的推送通知有什么新功能吗 因为 我无法弄清楚 另外 是否需要在功能下打开推送通知 需要对带有 xCode 8 GM 的 iOS 10 进行一
  • 如何使用 AWS CDK 查找现有 ApiGateway

    我正在使用 AWS CDK 构建我的 lambda 并且我想从 lambda 的 CDK 堆栈注册终端节点 我发现我可以使用 fromRestApiId scope id restApiId 获取现有的 ApiGateway 构造 文档在这
  • 设置自动增量列的起始值

    我有一张桌子Orders包含以下字段 身份证 小计 税务 运输 创建日期 The Id列设置为autoincrement 1 1 这将在电子商务店面中使用 有时 当前的电子商务商店会迁移到我的平台 并且他们已经有订单 这可能意味着他们当前的
  • 清除所有旧的 CMFEditions 版本

    我们有一个巨大的网站 应该为开发副本准备数据库 如何删除所有内容项的所有旧历史版本 通过这种方式 我们可以大大减少传输到开发人员计算机所需的数据大小 克隆人4 0 转到portal purgepolicy 并将数字设置为某个数字 我通常使用
  • 如何将输入的第一个字母大写?

    我目前正在尝试将输入中的第一个字母大写 这是我尝试过的 fieldset input text transform capitalize 但它并没有按照我想要的方式工作 因为每个单词都是大写的 我也尝试过这个 fieldset input
  • 关注 iPhone 上的下一个有效关键视图

    iPhone 是否有同等功能NSResponder方法 selectNextKeyView or nextValidKeyView来自 Mac OS X 我知道关于 becomeFirstResponder方法 但是当视图层次结构变得更加复
  • 您能详细解释一下.el、getEl()、Ext.get()吗?

    我是 Sencha ExtJs 的新手 我没看懂这行Ext getCmp component id getEl hide 有什么用 getEl 我可以写吗Ext getCmp component id hide 直接地 并向我解释一下 el
  • java.time:日期“20150901023302166”的 DateTimeParseException [重复]

    这个问题在这里已经有答案了 LocalDateTime parse 20150901023302166 DateTimeFormatter ofPattern yyyyMMddHHmmssSSS 给出错误 java time format
  • 检查 PHP 中是否为多字节字符串

    我想检查 PHP 上是否是字符串类型多字节 知道如何实现这一点吗 Example 也许 规则8字节 I read 可变宽度编码 WIKI and UTF 8 维基百科 有两种解释 首先 每个字符都是多字节