PHP 用 vars 替换字符串中的通配符(%s、%d)

2023-12-10

我有翻译功能t($var);

function t($word) {
    return $this->words[$word];
}

where $this->words是数组

$this->words = array(
    'word1' => 'word',
    'word2' => 'something'
);

我使用函数作为<?php echo t('word1'); ?>输出是:word

My goal是使用通配符%s, %d, %f用变量替换它们。

Example:

$this->words = array(
    'word1' => 'word',
    'word2' => 'something',
    'sentence' => 'Hello, my name is %s. I am %d years old.'
);

然后将变量解析为t()功能。

<?php echo t('sentence', array('Mike', 99));

所以输出将是:Hello, my name is Mike. I am 99 years old.

到目前为止我的工作:

function t($word, $vars = array()) {
    foreach ($vars as $key) {
        if(is_string($key)){
            $this->words[$word] = str_replace ('%s', $key, $this->words[$word]);
        }
        if(is_int($key)) {
            $this->words[$word] = str_replace ('%d', $key, $this->words[$word]);
        }
        if(is_float($key)){
            $this->words[$word] = str_replace ('%f', $key, $this->words[$word]);
        }
    }
    return $this->words[$word];
}

但此函数不适用于每种类型的多个变量。


我见过人们推荐使用sprintf但我个人建议使用vsprintf: http://www.php.net/manual/en/function.vsprintf.php

function t($word, $vars = array()) {
  return vsprintf($this->words[$word], $vars);
}

这允许您传递变量数组,而不是将它们作为单独的参数传递。

一般来说,翻译函数会首先检查翻译,如果没有找到,则返回查找键。

function t($word, $vars = array()) {
  return isset($this->words[$word]) ? vsprintf($this->words[$word], $vars) : $word;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 用 vars 替换字符串中的通配符(%s、%d) 的相关文章

  • 登录 WordPress 后重定向

    我正在根据现有网站创建自定义 WordPress 主题 我想使用我创建的备用仪表板 我怎样才能将用户定向到 news php 登录后而不是 wp admin EDIT 为此有一个可用的插件 但任何可以通过functions php找到手动方
  • PHP在页面上重复图像[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我制作了一个 php 程序来在方框中重复页面上的图像 该图像连续重复 100 次 然后垂直重复 100 次 这意味着该方框中总共重复了 100x
  • 如何使用 mysqli 设置排序规则?

    我的数据库使用 utf8 czech ci 排序规则 我也想将其设置为我的数据库连接 如果我不想要默认的 utf8 general ci Mysqli set charset 不会让我设置排序规则 Here https bugs php n
  • 如何在 Mac v 10.7.2 上安装/使用 php

    我是对使用 PHP 感兴趣的普通大学生 谁能告诉我 101 如何使用简单明了的语言在 mac 版本 10 7 2 上安装 启用它 我将感谢任何和所有的帮助 Cheers 无需安装 PHP 或 Apache 它们已随 Mac 10 7 一起提
  • 改变了 (un)serialize() 的行为?

    编辑 问题是现在已记录的 php 错误 https bugs php net bug php id 71617 https bugs php net bug php id 71617感谢您找到那个 Danack 我刚刚将应用程序从 PHPH
  • PHP CLI 有几秒钟的延迟

    当我在 CLI 模式下运行 PHP 时 CentOS 6 5 下的 PHP 5 6 6 使用 VirtualBox 作为虚拟机运行 即使我只检查版本并且禁用 php ini 文件 也会有几秒钟的延迟 time php n v PHP 5 6
  • PHP的rand函数真的有那么糟糕吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 laravel 拒绝 .composer/config 文件权限

    我在 ubuntu virtualbox 上有一个 laravel 项目 我曾经跑步composer update一切都很好 我不知道有什么变化可能会影响这一点 但现在当我跑步时composer update I get file get
  • 销毁Session但保留flashdata

    我在用坦克验证 http www konyukhov com soft tank auth 用于我的 CI 1 7 3 应用程序中的用户管理 一切工作正常 但我正在尝试设置flash message当用户注销时显示 问题是 this gt
  • 为什么在打开的文件上取消链接成功?

    为什么打开的文件被删除了 在 Windows Xamp 上 我收到消息 仍在工作 但在其他 PHP 服务器上 文件被删除 即使它已打开 并且我收到消息 文件已删除 我也可以从 FTP 删除文件 即使第一个脚本仍在工作 UNIX 系统通常允许
  • Google OAuth 2 PHP 调用用户信息

    我正在尝试使用 Google 的 OAuth2 API 在他们的通用文档中 他们提到了一个名为 UserInfo 的调用 http code google com apis accounts docs OAuth2Login html us
  • 防止我的 PHP 网络爬虫停止运行

    我正在使用 PHPCrawl 类并添加了一些 DOMDocument 和 DOMXpath 代码来从网页中获取特定数据 但是脚本在接近爬行整个网站之前就停止了 我已将 set time limit 设置为 100000000 因此这不应该成
  • YouTube api 的永久访问令牌?

    我已经浏览了用于身份验证的 Oauth 和 AuthSub 方法的 google 文档 并且我尝试通过 google 搜索此内容 但没有结果 对于 Facebook 您可以请求长度为 的访问令牌lifetime 这意味着您不必每隔几周就请求
  • 如何将parameters.yml中的Symfony参数注入Behat 3配置中?

    我需要设置base url for Behat MinkExtension 这是我的一部分应用程序 配置 parameters yml parameters behat base url http my app local app test
  • PHPExcel - 如何使用 preg_replace 替换文本

    我正在使用 PHPExcel 将数据库中的数据提取到组织好的 Excel 工作表中 除了一件事之外 一切都运转良好 我的数据库条目有时可能包含 HTML 标记 例如 strong strong br p p 等等 所以我设法让这个 PHP
  • 我可以制作一个 PHP“宏”(如#define)来为函数调用提供参数吗?

    我所说的参数是 FILE and LINE 函数调用者的那些 以便函数可以在错误报告中使用它们 假设我有两个文件和 file 1 php 调用的第 100 行my func 在 file 2 php 中 我想拨打这个电话my func FI
  • 在 PHP 中使用重命名函数时出错

    尽管文件仍然被移动到正确的目录中 但我不断收到此错误 有人知道我为什么会收到此错误吗 Warning rename Images uploaded 1162504 56863010 jpg Images uploaded Portraits
  • file_get_contents:即使出现错误也能获得完整响应

    是否有可能使file get contents即使发生错误也显示实际响应 否则很难调试 例如 假设您有以下代码 url https api twitter com oauth request token data array options
  • 在 Woocommerce 结帐页面上移动亚马逊按钮

    我需要移动 Woocommerce 结账页面上的 Amazon Pay 消息 按钮 我们正在使用Woocommerce 的亚马逊支付 https woocommerce com products pay with amazon 当我查看插件
  • 在 imagick php 中使用 svg 原始数据生成 SVG 图像

    我正在尝试使用从 Fabric js 获取的 svg 原始数据创建 svg 图像 我使用下面的代码使用 svg 原始数据生成 svg 但它无法正常工作 public function generate svg raw svg prefix

随机推荐

  • 如何正确重写 Viewgroup 类中的 onLayout 方法

    我有一个从视图组类扩展的类 现在我知道在 onLayout 中你必须调用每个孩子的布局方法 这里的问题是应该将什么值传递给子布局 在我看来 我膨胀了一个 xml 并将其附加到此类 宽度和高度在 xml 中定义 在 onlayout 中 我得
  • 在 python watchdog 中并行处理多个 onCreated 事件

    我正在尝试检测目录上是否创建了任何新文件 如果创建 我想处理它 需要 10 分钟才能给出输出 同时其他新文件也会在该文件夹中创建 我如何使用多进程注册看门狗的 oncreated 以便每次创建文件时都会生成一个新进程 而不是等待一个文件完成
  • 使用 Guzzle PHP 将文件分块上传到 URL 端点

    我想使用 guzzle 将文件分块上传到 URL 端点 我应该能够提供 Content Range 和 Content Length 标头 使用 php 我知道我可以使用 define CHUNK SIZE 1024 1024 Size i
  • XSLT 转换为 xml,按键分组

    我在编写 xsl 将 xml 转换为 raport 版本时遇到问题 看起来像这样
  • 使用反射将属性动态转换为其实际类型(其中实际类型是通用的)

    这是一个略有不同的问题here 我将相同的代码修改为我的需要 如下所示 using System using System Collections Generic using System Linq using System Reflect
  • 由于类型转换而未使用索引?

    由于对特定表进行全表扫描 我有一个进程表现不佳 我计算了统计数据 重建了现有索引并尝试为此表添加新索引 但这并没有解决问题 隐式类型转换可以停止使用索引吗 其他原因又如何呢 全表扫描的成本比索引查找的成本大约高 1000 EDIT SQL语
  • 从 parse.com 检索图像

    我不知道这是否可能 但我认为这是可能的 但我不知道该怎么做 我只是想从 parse com 加载图像 就像从 parse com 检索对象一样 我应该像从 parse com 获取字符串一样进行操作吗 我刚刚找到了如何在解析时保存图像 但没
  • 如何制作输出目录选择面板?

    您好 我正在尝试制作一个窗格 在我的计算机中显示类似 Windows 资源管理器的内容 当用户完成操作后 当他想要将编辑后的图像保存在磁盘上的特定位置时 他可以轻松地从该窗格中选择目录 我想设计这样的东西 可以做类似的事情吗 我的图片编辑器
  • pandas pytables 附加:性能和文件大小的增加

    我有500多个PyTables每个存储大约包含 300Mb 的数据 我想使用 pandas 将这些文件合并到一个大商店中append如下面的代码所示 def merge hdfs file list merged store for fil
  • 如何将 ruby​​gem 条件要求添加到 gem 规范中?

    仅当用户使用特定版本的 ruby 时才可以添加 gem 依赖项吗 背景 我正在研究一个项目的分支使用 Test Unit Autorunner 等 它们是 ruby 1 8 中标准库的一部分 但不是 1 9 1 中标准库的一部分 而是位于
  • python 列表,向列表添加一些内容会改变整个内容?

    所以我试图在Python中实现选择排序 并且我将每次迭代的结果附加到一个列表中以在最后打印 我的代码正确地对数字列表进行排序 但是当我将它附加到最后的同一个列表中时更改所有其他列表 def s sort numbers alist do a
  • 计算出勤时间差

    我有一个包含以下示例输出的表格 UserID Checktime CheckStatus 3175 2013 12 22 07 02 10 000 I 3175 2013 12 22 13 01 01 000 O 3175 2013 12
  • 针对特定图像的 CSS

    我正在寻找一种使用 CSS 定位特定图像的方法 如果可能的话 我正在运行一个 CMS 用户可以在其中上传图像并将其放在他们的页面上 我想要一种定位具有特定尺寸的图像的方法 所以问题是 你可以让 css 行针对具有特定尺寸规格的图像或对象吗
  • 使用 LocalStorage 保存和加载购物车

    我有以下代码 inames iqtyp iprice function bestel inames push document getElementById artikel innerHTML iqtyp push parseInt doc
  • C - strtok(...) 上出现意外的分段错误

    我正在使用库的 strtok 它似乎工作正常 直到结束条件 它导致分段错误和程序崩溃 API 声称 当找不到更多标记时 strtok 将输出 NULL 这意味着 我认为 您必须捕获此 NULL 才能终止使用 strtok 运行的任何循环 我
  • Android 来电事件

    我想创建一个 onCall 事件 我已经知道没有这样的方法 但基本上我想做的是 当接到来电时 弹出 Toast 或其他任何内容 任何类型的教程或示例代码都会有帮助 多谢 Use PhoneStateListener它已经重写了方法onCal
  • 如何确定 ARM 处理器是运行在通常的锁定“世界”中还是运行在 Secore“世界”中?

    例如 virt what显示您是否在硬件虚拟化 沙箱 内运行 如何检测您是否在 ARM TrustZone 沙箱中运行 信任区也许与你想象的不同 有一系列模式 从 可信功能的简单 API 到在每个世界中运行的 双操作系统 如果该问题有更多背
  • Objective-C:正确保留 3 位小数

    我正在尝试将浮点值降低到小数点后第三位 例如 值 2 56976 应为 2 569 而不是 2 570 我搜索并找到了这样的答案 向下取小数点后两位数 这样的答案并不准确 例如代码 double value double unsigned
  • 序列化静态类?

    如果我们序列化静态类会发生什么 如果我们序列化静态类 是否可以创建多个静态类实例 Serializable public static class MyClass public static MyClass public static bo
  • PHP 用 vars 替换字符串中的通配符(%s、%d)

    我有翻译功能t var function t word return this gt words word where this gt words是数组 this gt words array word1 gt word word2 gt