Php 如何使用细枝生成随机字符串?
我有一个保存优惠券代码的输入。用户可以填写自定义代码,但我想给他们一个默认代码。我现在有以下代码:Php 如何使用细枝生成随机字符串?,php,twig,Php,Twig,我有一个保存优惠券代码的输入。用户可以填写自定义代码,但我想给他们一个默认代码。我现在有以下代码: <input type="text" name="code" value="{{ form.code|default(RANDOM_CODE) }}"> 我想用一个随机字符串替换RANDOM\u code 我认为这与问题无关,但form.code包含原始优惠券代码。我使用相同的表单进行编辑 根据Twig docs的说法,可以使用random()生成随机数,甚至可以使用random
<input type="text" name="code" value="{{ form.code|default(RANDOM_CODE) }}">
我想用一个随机字符串替换RANDOM\u code
我认为这与问题无关,但form.code
包含原始优惠券代码。我使用相同的表单进行编辑
根据Twig docs的说法,可以使用random()
生成随机数,甚至可以使用random('abcdefgh…')
从字符串中获取随机字符,但我希望生成具有特定长度的随机字符串
我知道我至少可以通过两种方法做到这一点:
我知道我很好奇是否有办法只使用Twig的内置函数生成一个随机字符串。这段代码将在base64中生成一个10个字符的密码(a到Z,小写和大写,0到9,破折号和下划线)。这也使得它的url友好。如果愿意,可以根据自己的喜好更改参数
{% set randomPassword = [] %}
{% set alpha = 'abcdefghijklmnopqrstuvwxyz' %}
{% set numbers = '0123456789' %}
{% for i in 1..10 %}
{% set randomCharacter = random(alpha ~ alpha|upper ~ numbers ~ '-_') %}
{% set randomPassword = randomPassword|merge([randomCharacter]) %}
{% endfor %}
{% set randomPassword = randomPassword|join %}
{{ randomPassword }}
同意@Fluffy的观点,您不应该在twig中进行操作:优惠券代码是一个数据,将在php中处理,它必须在php中生成 然而,我得到了一个直接在模板中生成唯一id的用例:当只涉及模板时 我得到了一张有输入的表格。我需要输入一个id,但只能从同一模板内的标签的“for”属性中引用它们 由于它是在循环中生成的,因此我提出了一个简单的:
{% set domid='msg' ~ loop.index %}
本地小枝:
{{ random() }}
请访问下面的链接获取细枝文档。
[检查此项]:我认为可以使用Twig创建变量。通过每次生成一个随机字符并追加,可以使用循环将多个字符随机化。这能行吗?@rnevius,是的。“在我的问题中,我是这么说的。”伊斯梅尔·米格尔,这似乎会奏效。我可以使用
for
循环来给出一个范围,比如{%for I in 0..10%}
来创建一个长度为10个字符的字符串。但是使用这种方法,我需要在循环中添加一个random('abcdefghi…')
。我在想一些更紧凑的东西,但我几乎肯定这是不可能的。听起来你好像有一个计划!我经常通过简单地在前缀后面添加一个随机数来实现这一点。例如:{%set code='prefix-'~random()%}
。通过使用范围来确定长度。十个字?”前缀-'是7,还需要3个random([100..999])
-3位随机数。这正是创建twig的目的。@Fluffy可能不是为了这个目的,但是生成随机字符串在html中有一个实用程序,可以为元素生成(任意的,但有时是必要的,可能是重复的)唯一ID。我认为这个问题是正确的,尽管这里的目的是可疑的。嘿,皮埃尔·奥利维尔·瓦雷斯。谢谢你的贡献,但这不是我想要的。它不会生成具有特定长度的随机字符串。正如您在问题中所看到的,我知道“在控制器中生成默认随机代码,然后将其传递给视图”是一种可能的方法。那只是当时的好奇心问题。但是,这似乎是不可能实现的。老实说,我的评论更多的是为了回答类似的问题——尤其是我遇到的案例:)——而不是回答你的问题。我承认,这可能不是最好的方法。如果你检查原始问题,你会看到它提到random()
。限制是长度,无法使用它设置特定的长度。确定一旦获得字符串,就可以使用所需的数字对其进行切片。{{'12345'|切片(1,2)}有关更多信息,请访问以下网站: