【问题标题】:PHP: Split a string in to an array foreach charPHP:将字符串拆分为数组 foreach char
【发布时间】:2010-11-20 14:32:33
【问题描述】:

我正在制定一种方法,因此您的密码至少需要一个大写字母和一个符号或数字。 我正在考虑将字符串拆分为丢失字符,然后使用 preggmatch 来计算它是否包含一个大写字母和符号/数字。

但是我在动作脚本中做了类似的事情,但无法弄清楚这是如何在 php 中调用的。我找不到将单词的每个字符放入数组中的方法。

AS3 示例

    for(var i:uint = 0; i < thisWordCode.length -1 ; i++)
{
    thisWordCodeVerdeeld[i] = thisWordCode.charAt(i);
    //trace (thisWordCodeVerdeeld[i]);
}

谢谢, 马蒂

【问题讨论】:

标签: php arrays split passwords validation


【解决方案1】:

您可以像访问数组索引一样访问字符串中的字符,例如

$length = strlen($string);
$thisWordCodeVerdeeld = array();
for ($i=0; $i<$length; $i++) {
    $thisWordCodeVerdeeld[$i] = $string[$i];
}

你也可以这样做:

$thisWordCodeVerdeeld = str_split($string);

但是您可能会发现将字符串作为一个完整的字符串进行验证更容易,例如使用正则表达式。

【讨论】:

  • 方括号符号的文档:php.net/manual/en/…
  • 使用 isset 代替 strlen:for ($i=0; isset($string[$i]); $i++) {
  • $thisWordCodeVerdeeld = str_split($string);这是分隔字符串字符并将每个字符放入数组中的完美答案。
【解决方案2】:

您可以使用str_split 将字符串转换为数组并使用foreach

$chars = str_split($str);
foreach($chars as $char){
    // your code
}

【讨论】:

  • 恕我直言,这是最好的方法。它可能不是最快的,但对于大多数应用程序来说,这根本不重要。在我们的应用程序中,甚至无法测量速度差异。 (与 for 循环相比。)
  • 也同意这是更好的答案,因为它更直接地回答了问题
  • 注意如果$str是空字符串str_split会返回[""]
  • 这仍然是最好的答案。只是现在最好使用mb_str_split 来正确处理多字节字符串。
【解决方案3】:

您可以像访问数组一样使用[] 访问字符串:

$stringLength = strlen($str);
for ($i = 0; $i < $stringLength; $i++)
    $char = $str[$i];

【讨论】:

【解决方案4】:

由于str_split() 函数不是多字节安全的,拆分UTF-8 编码字符串的简单解决方案是使用preg_split()u (PCRE_UTF8) 修饰符。

preg_split( '//u', $str, null, PREG_SPLIT_NO_EMPTY )

【讨论】:

  • 这是一个重要的细微差别 - 我很高兴我向下滚动阅读此答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多