Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用细枝生成随机字符串?_Php_Twig - Fatal编程技术网

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)}有关更多信息,请访问以下网站: