首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从字符串中提取数字,将它们保存到数组中,然后将它们放回字符串中。

从字符串中提取数字,将它们保存到数组中,然后将它们放回字符串中。
EN

Stack Overflow用户
提问于 2012-12-05 01:50:16
回答 1查看 440关注 0票数 1

我一直在使用stackoverflow来学习PHP和JS (包括jquery),所以我总是在谷歌上搜索,但是我没有找到这个问题的确切答案。

我有很多字串和数字混在一起,比如:

“来自12人的60篇评论,占用户的20%”

这是一个例子,但可能要复杂得多("word_one 45 word_two word_three 657 word_four 32% word_five USD20")

使用内容本地化:

我想检索这些数字并将它们保存到一个数组-> to 中。

我想将这些数字与数据库中已有的数字相匹配,也就是说,如果我有

en:“来自2个人的2个评论,2%的用户”

es:"2 comentarios de 2 personas,el 2% de los usuarios“-> de.

现在,我想要做的是将从数据库中提取出来的匹配字符串中的数字(它们都是"2“,因为我以这种方式保存它们,以避免复数-单数问题)替换为英文原始字符串中的数字。示例:

我用英语写了这个:

“来自12人的60篇评论,占用户的20%”

我在数据库中有这样的内容:

en:“来自2个人的2个评论,2%的用户”

es:"2 comentarios de 2 personas,el 2% de los usuarios“

我想用西班牙语写这个:

"60名副主席,20%的洛苏里奥斯“

代码:

代码语言:javascript
复制
$pattern = '!\d+!';
$repv = preg_replace($pattern, "2", $v);

preg_match_all($pattern, $v, $matches);     
$matchesnb = count($matches, 1);
$pattarray = array_fill("0", "1", array_fill("0", ($matchesnb-1), $pattern));
$reptarget = preg_replace($pattarray, $matches, $dbdata[1]);

提前谢谢!

EN

回答 1

Stack Overflow用户

发布于 2012-12-05 03:17:18

为什么不将模板语句保存在数据库中,以便与sprintf()函数一起使用?

代码语言:javascript
复制
$str = array(
    'en' => '%d reviews from %d people, %01.1f%% of users',
    'es' => '%d comentarios de %d personas, el %01.1f%% de los usuarios'
);
$res = sprintf($str['es'],60,12,20);

编辑:句子中单词的顺序在所有语言中并不相同。因此,我认为对论点进行编号是一种更好的办法。我在下面的数组中添加了土耳其选项,以显示arg1和arg2的切换以及百分比符号如何改变位置(例如,它放在前面,而不是在土耳其数字之后)。

代码语言:javascript
复制
$str = array(
    'en' => '%1$d reviews from %2$d people, %3$01.1f%% of users',
    'es' => '%1$d comentarios de %2$d personas, el %3$01.1f%% de los usuarios',
    'tr' => '%2$d kullanıcıdan %1$d yorum, tüm kullanıcıların %%%3$01.1f\'si'
);
$res = sprintf($str['es'],60,12,20);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13715099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档