用户名regex字母数字,仅带下划线 - php

我正在尝试为php的preg_match找到一个正则表达式,该表达式允许带下划线的字母数字字符,但下划线必须位于字符之间(而不是字符串的开头或结尾),并且彼此之间永远不能有2个下划线。

例子:

无效:

_name
na_me_
na__me

有效:

na_me
na_m_e

我发现其中的大部分适用于此功能,但不能避免出现重复的下划线:

/^[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*$/

但是就像我说的那样,那仍然允许像na__me这样的情况。

有人有主意吗?谢谢!

参考方案

这样做:

(?x)           # enable comments and whitespace to make
               # it understandable.  always always do this.

^              # front anchor

[\pL\pN]       # an alphanumeric

# now begin a repeat group that 
# will go through the end of the string

(?: [\pL\pN]   # then either another alnum
  |            # or else an underbar surrounded
               # by an alnum to either side of it
    (?<= [\pL\pN] )      # must follow an alnum behind it
    _                    # the real underscore
    (?=  [\pL\pN] )      # and must precede an alnum before it
) *            # repeat that whole group 0 or more times

\z             # through the true end of the string

因此,您从一个字母数字开始,到最后有任意数量的字母下划线,将任何实际的下划线都限制在任一边都被实际的字母数字包围。

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

PHP:从函数返回值并直接回显它? - php

这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…

php:是否有充分的理由引用所有数组键/索引? - php

我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…

php fopen相对路径断开-神秘 - php

我知道“必须进行某些更改”,但是我的代码似乎整夜无故中断。我的服务器目录结构是这样的: / /脚本 /审计 /其他事情我在“脚本”文件夹中有一个脚本(假设它被称为“ /scripts/MyScript.php”),该脚本使用curl收集网页中的数据,并将其日期过的副本保存在“审核”文件夹中。要写入审核文件夹,我使用了 $ fh = fopen(“ ./ au…

标头和包含项之间有什么区别,应在何处使用 - php

我对两个词感到困惑header ("Location:homepage_php");include("homepage.php");我猜想标题是在检查密码过程后使用的,关于include,您可以在任何地方使用它。但是我不确定它们之间的实际区别是什么以及应该使用这两个中的哪个位置。 参考方案 标头将用户转发到新页面,因此…