0

我想在文本中找到“代码”,这些代码可以包含字母和数字,并且可以有不同的长度。文本可能如下所示:

This is a example text, it contains different codes like this one 8de96217e0fd4c61a8aa7e70b3eb68 or that one a7ac356448437db693b5ed6125348.

如何以正确的顺序(从第一个到最后一个)找到并回显它们。我认为 prey_match() 有一种方法,但我不知道如何制作正则表达式。附加信息:代码都大约 30 个字符长,只包含小写字母和数字。

非常感谢任何帮助。谢谢!

4

4 回答 4

5
preg_match_all("/[a-z0-9]{25,}/", $text, $matches);
print_r($matches);

简单但应该适用于您的情况。

输出:

Array
(
    [0] => Array
        (
            [0] => 8de96217e0fd4c61a8aa7e70b3eb68
            [1] => a7ac356448437db693b5ed6125348
        )

)
于 2012-08-16T14:24:15.473 回答
1

您可以使用以下代码:

$string = "This is a example text, it contains different codes like this one 8de96217e0fd4c61a8aa7e70b3eb68 or that one a7ac356448437db693b5ed6125348."
preg_match_all("/[0-9a-z]{30,}/", $string, $matches)

where$matches是一个包含所有匹配项的数组。如果您愿意,可以将 {30,} 调整为更高或更低的数字。这只是连续字符的数量。

于 2012-08-16T14:28:05.160 回答
0

基本上,

$words = explode($text);
foreach($words as $word)
{
  if(strlen($word)==30)
    echo $word;
}

如果你想消除像 #+$*... 这样的字母,你应该使用正则表达式

编辑:Forlan07 的答案显然更好。

于 2012-08-16T14:24:16.067 回答
0

如果您的要求是“哈希”同时包含字母和数字,您可以尝试类似的操作:

$string = "This is a example text, it contains different codes like this one 8de96217e0fd4c61a8aa7e70b3eb68 or that one a7ac356448437db693b5ed6125348.";

$words = explode(" ", $string);
$hashes = array();

foreach ($words as $currWord)
{
    $hasLetter = false;
    $hasNumber = false;

    for ($index = 0; $index < strlen($currWord); $index++)
    {
        if (ctype_alpha($string[$index]))
            $hasLetter = true;
        else
            $hasNumber = true;
    }

    if ($hasLetter && $hasNumber)
        $hashes[] = $currWord;
}
于 2012-08-16T14:28:27.830 回答