字符串比较:与 PHP 中 JavaScript 的 localeCompare 相同吗?

2023-12-03

有没有办法让 PHP 中的字符串比较函数与 JavaScript 的相同string.localeCompare()?

我的目标是制作一个可以应用于 PHP 和 JS 中的简单对象的哈希器。属性排序可以根据这个问题来解决:按属性值对 JavaScript 对象进行排序

我制作了属性键和值连音的列表,并按键对列表进行排序。 (请注意,这也可以递归地工作。)但我有点害怕字符串表示和语言环境,它们可能很棘手。如果属性键包含一些花哨的字符,那么 PHP 和 JS 端的排序可能会有所不同,从而导致不同的哈希值。

在 PHP 中尝试以下操作,并在 JS 中进行类似的比较。

echo strcmp('e', 'é')."\n";
echo strcmp('e', 'ě')."\n";
echo strcmp('é', 'ě')."\n";
echo strcmp('e', 'f')."\n";
echo strcmp('é', 'f')."\n"; // This will differ
echo strcmp('ě', 'f')."\n"; // This will differ

主要问题:如何在 PHP 和 JS 中执行相同的字符串比较?

附带问题:PHP 和 JS 中对象散列的其他想法?


看看国际扩展.

e.g.

<?php
// the intl extensions works on unicode strings
// so this is my way to ensure this example uses utf-8
define('LATIN_SMALL_LETTER_E_WITH_ACUTE', chr(0xc3).chr(0xa9));
define('LATIN_SMALL_LETTER_E_WITH_CARON', chr(0xc4).chr(0x9b));
ini_set('default_charset', 'utf-8');
$chars = [
    'e',
    LATIN_SMALL_LETTER_E_WITH_ACUTE,
    LATIN_SMALL_LETTER_E_WITH_CARON,
    'f'
];

$col = Collator::create(null);  // the default rules will do in this case..
$col->setStrength(Collator::PRIMARY); // only compare base characters; not accents, lower/upper-case, ...

for($i=0; $i<count($chars)-1; $i++) {
    for($j=$i; $j<count($chars); $j++) {
        echo $chars[$i], ' ', $chars[$j], ' ',
            $col->compare($chars[$i], $chars[$j]),
            "<br />\r\n";
    }
}

prints

e e 0
e é 0
e ě 0
e f -1
é é 0
é ě 0
é f -1
ě ě 0
ě f -1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符串比较:与 PHP 中 JavaScript 的 localeCompare 相同吗? 的相关文章

  • 带有淘汰赛js的隐形recaptcha

    我正在完成隐形验证码 但我在实现它时遇到问题 谷歌开发人员页面中的代码显示它应该是这样的
  • 隐藏 Div 的父级

    我只是想隐藏父divcomments section div class content content green div div div 我试过这个 document getElementById comments section pa
  • Bootstrap按钮加载+Ajax

    我正在使用 Twitter Bootstrap 的按钮加载状态 http twitter github com bootstrap javascript html buttons http twitter github com bootst
  • CodeIgniter:My_Lang 中的 get_instance

    我发现这个有用的国际化代码 http pastebin com SyKmPYTX http pastebin com SyKmPYTX 一切正常 除了我无法在此类中使用 CI 函数 我想从 DB 设置 languages 和 special
  • 如何处理 REST api 中的 php 通知、警告和错误?

    在 REST API 中 200 响应表明操作成功 PHP 默认情况下直接在响应正文中输出错误消息 而不更改响应代码 在 SPA 中 用户无法直接看到响应文本 因此 当应用程序未按预期工作时 我通过 FireBug 检查响应正文 以检查可能
  • 使用PHP从doc、xls文件中读取数据

    我想知道是否可以从 doc 和 xls 文件中读取数据并将 将内容读取到图像文件中 创建文档的页面样本 例如 我有一些文件希望我的客户购买 所以我需要自动创建小图像 例如我的文档样本 我们将不胜感激您的帮助 对于读取 xls 文件 我真的推
  • php - 解析html页面

    div divbox div p para1 p p para2 p p para3 p table class table tr td td tr table p para4 p p para5 p 有人可以告诉我如何解析这个 html
  • 使用 CSS 或 Javascript 填充动画

    我只是想知道是否可以使用 CSS 或 javascript 创建填充动画 基本上我想创建一个填充动画 如下图所示 http i40 tinypic com eit6ia png http i40 tinypic com eit6ia png
  • window.location 和 location.href 之间的区别

    我对之间的区别感到困惑window location and location href 两者似乎都以相同的方式行事 有什么不同 window location是一个对象 它保存有关当前文档位置的所有信息 主机 href 端口 协议等 lo
  • PHP 检查当前日期是在设定日期之前还是之后

    我从数据库中提取一个日期 其格式为 dd mm YYYY 我想做的是检查当前日期 如果当前日期早于数据库中的日期 则需要打印数据库日期 如果是在之后 则需要打印 继续 有人能指出我正确的方向吗 if strtotime database d
  • 雄辩的第一个 where 子句

    我想知道 Laravel 如何实现雄辩的语法 以便可以静态调用第一个 where 子句User where User where id 23 gt where email email gt first 他们有吗public static f
  • PHP session_regenerate_id 和黑莓浏览器

    问候 我正在开发一个登录系统 并陷入了黑莓浏览器身份验证的困境 他们似乎对 PHP 的 session regenerate id 有问题 有人可以建议替代方案吗 以下是身份验证和登录脚本 UPDATE看来会话一般都不起作用 拿出 sess
  • 可以设置标题样式吗? (并且使用CSS或js?)[重复]

    这个问题在这里已经有答案了 我想知道是否可以设计一个title a href title This is a title Hello a 样式问题有两个方面 文本格式 编码 我猜这是可能的 所以在问题中这样做 工具提示样式 你能把它弄大一点
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • 日期出现奇怪的错误,“未捕获非法访问”

    所以我试图找到最新的DateJavascript 可以处理 我把它减少到 9 月 275760 并增加了我开始捕获未捕获的天数illegal access例外new Date 09 24 275760 to new Date 10 13 2
  • PHP 表单 - 带验证蜜罐

    我有以下内容 效果很好 但对垃圾邮件机器人开放 我想放入蜜罐 而不是验证码 下面的代码适用于验证姓名 电子邮件 消息 但我无法让它与蜜罐一起工作 任何人都可以查看 蜜罐 代码并告诉我如何修复它吗 我希望表单给出 success2 不允许垃圾
  • 如何在 PHP 5.6 中通过 php.ini 设置“verify_peer_name=false”SSL 上下文选项

    案例 我想打开 SSL 连接localhost而 SSL 证书是 FQDN 的问题 问题 没有进行特殊处理就行 下面的程序失败并显示以下消息 PHP Warning stream socket enable crypto Peer cert
  • 如何使用 crypto-js 解密 AES ECB

    我正在尝试将加密数据从 flash 客户端 发送到服务器端的 javascript 在 asp 中作为 jscript 运行 有几个 javascript Aes 库 但它们实际上没有文档记录 我正在尝试使用 crypto js 但无法让代
  • 如何用另一个响应替换窗口的 URL 哈希?

    我正在尝试使用替换方法更改哈希 URL document location hash 但它不起作用 function var anchor document location hash this returns me a string va
  • 如何确定所有角度2分量都已渲染?

    当所有 Angular2 组件完成渲染时 是否会触发一个角度事件 For jQuery 我们可以用 function 然而 对于 Angular2 当domready事件被触发 html 只包含角度组件标签 每个组件完成渲染后 domrea

随机推荐

  • RSA 我应该使用 X.509 还是 PKCS #1

    使用案例 我有一个用例 其中客户端生成私钥和公钥 并将 Base 64 编码的公钥发送到服务器 在服务器端 我将使用此公钥对消息进行加密 并将加密的消息发送到客户端 客户端使用其私钥对其进行解密 商定的算法是 RSA 问题出在服务器端 我发
  • PHP mail() 附件已损坏

    我一直在努力尝试使用 PHP 发送带有附件的电子邮件 它曾经有效 但消息正文被打乱 现在我的邮件正文可以正常工作 但附件已损坏 我曾经对消息正文使用 Base64 编码 但现在使用 7 位 谁能告诉我我做错了什么 PS请不要告诉我应该使用预
  • 页面刷新后 $stateParams 为 null

    当通过 state go 传递 stateParams 时 当我直接单击链接时 它会正确显示 但在页面刷新或通过另一个窗口打开后会变为 null 我有以下功能 scope urlvalues function url page var re
  • 如何使用Http缓存控制保存firestore请求?

    假设我有一个运行 firebase firestore 数据库的网络 移动应用程序 我的应用程序设置为主要服务动态内容完全存储在 firestore 中 所以我们讨论的是缓存动态内容 例如 如果用户加载页面 A 它将向 firestore
  • python-捕获分子的晶格结构-无法正常工作

    我有这个问题 创建一个程序 构造一 1 维的晶格并 100000 个站点 在这个格子中随机放置一些陷阱 分子 其浓度为 c 随机放置 1 个粒子 放在格子上并让它执行随机游走 在这次行走中 您不会设置时间限制 即您不会声明 具体步数 当粒子
  • 为自定义视图添加圆角

    我对 Android 很陌生 我正在尝试在自定义视图 使用画布 上绘图 我那里有一些线条和矩形 关键是 我现在想要给整个视图提供圆角 但这效果不好 因为我在视图上绘图 而我的绘图位于圆角之上 这些圆角是通过资源添加的 是否可以添加覆盖整个视
  • 在 Cloud Build 步骤中执行 BigQuery 查询

    我正在使用 Cloud Buildgcloud建设者 我覆盖entrypoint to be bq这样我就可以在构建步骤中运行一些 BigQuery SQL 以前 我将 SQL 直接嵌入到 Cloud Build 的 YAML 配置中 这工
  • ACRA 与 android:如何在报告崩溃之前执行代码

    我正在使用 ACRA 和我的 Android 应用程序 我的问题是 当发生崩溃时 如何确保在报告崩溃之前执行一些代码 我的意思是我想在崩溃发生时添加一些自定义变量 以便我知道应用程序处于什么状态 请帮忙 谢谢 按照描述实现您自己的发件人he
  • Sublime Text 3 查找在文件末尾停止

    如果我有一个文本文件 1 foo 2 foo 3 foo 4 foo ctrl f will find the 1 then 2 and after finding 4 it ll say No results 以前只是跳转到1 再次 在我
  • 在Python中使用函数之前应该先定义它吗?

    函数应该在使用之前定义吗 但为什么下面的代码有效 def main dog def dog print This is a dog if name main main 我的意思是dog 是在调用后定义的 这是如何工作的 实际上不是 在调用后
  • BigQuery 有区域限制或其他区域之间有延迟吗?

    我想从 GCE 实例将数据存储在 BigQuery 上 并从不同区域实例查询它 例如 存储来自欧盟实例的数据 查询来自美国实例的数据 这是否可以毫不拖延地实现 我认为将数据复制到其他区域需要一些时间 BigQuery 有区域限制 很少有 像
  • 将字符串转换为小数,保留分数

    我正在尝试转换1200 00 to decimal but Decimal Parse 删除 00 我尝试过一些不同的方法 但它总是删除 00 除非我提供一个不同于 0 的分数 string value 1200 00 Method 1 v
  • Tensorflow 中的 8 位量化错误

    我一直在尝试新的8位量化功能在 TensorFlow 中可用 我可以毫无问题地运行博客文章中给出的示例 googlenet 的量化 并且它对我来说效果很好 现在 我想将同样的方法应用于更简单的网络 因此 我使用了 CIFAR 10 的预训练
  • 为什么Volley DiskBasedCache拼接时不直接获取缓存文件名

    Creates a pseudo unique filename for the specified cache key param key The key to generate a file name for return A pseu
  • SpelEvaluationException 找不到方法

    当我尝试使用 SpEL 将 User 传递给服务方法时 我面临下一个问题 evaluate expression commonService userTest user result flowScope user 春天抛出了以下异常 org
  • 多个 HTTP 授权标头?

    是否可以在 HTTP 消息中包含多个授权标头 具体来说 我想包括一种承载令牌类型 传递 OAuth 访问令牌 和一种基本类型 传递 base64 编码的用户名 密码 GET presence alice HTTP 1 1 Host serv
  • Python Flask Web 应用程序导航无需刷新页面

    我想开发一个像Google Contacts一样的Flask导航栏 当我单击每个导航按钮 如图所示的绿色框 时 我想在红色框内渲染特定的 HTML 页面 如图所示 而不刷新页面 我已经尝试过使用 扩展 layout html 正如 Klau
  • 通过文本框在 sql server 2005 中存储数据时出现错误

    我通过文本框和按钮在 SQL Server 2005 中存储数据 大约 1500 个字 我正在使用这段代码 protected void Button1 Click object sender EventArgs e conn Open S
  • 碰撞检测实施

    我有一个碰撞检测类 它通过查找中心之间的距离以及该距离是否足够小而足以发生碰撞来工作 请参阅碰撞检测错误 我的问题是试图让它真正发挥作用 椭圆形会发生碰撞 如果有必要 我会解释更多 谢谢 最好的方法是在图像重叠时实现每像素碰撞检测 您可以在
  • 字符串比较:与 PHP 中 JavaScript 的 localeCompare 相同吗?

    有没有办法让 PHP 中的字符串比较函数与 JavaScript 的相同string localeCompare 我的目标是制作一个可以应用于 PHP 和 JS 中的简单对象的哈希器 属性排序可以根据这个问题来解决 按属性值对 JavaSc