2014-04-30 19 views
0

我想从文本中提取7个十六进制字符。PHP提取7个字符文本中的十六进制

$text = 'Lorem ipsum dolor sit amet, 1AA69C9 consectetuer adipiscing elit. Aenean commodo ligula eget dolor. 2de7890'; 

preg_match_all("/^[0-9A-Fa-f]{7}$/",$text,$result); 
print_r($result); 

谢谢。

maybe similar to this but don't know why not working

+1

从正则表达式字符串中删除'^'和'$'字符串 – hindmost

+0

谢谢@最后它的工作(y) – Andy

+1

请记住,其他常规单词匹配该生产,如'caffee'(我知道,只有6个字符,但你明白了)。 – Boldewyn

回答

1

/^[0-9A-Fa-f]{7}$/查找字符串的开始和结束的十六进制字符串。

删除^$并使其成为词边界。

使用此:

/\b[0-9a-f]{7}\b/i 
+1

...并将其替换为'\ b',应该被添加。 – Boldewyn

+0

@Boldewyn,更新谢谢;) –

+0

我接受这个答案,因为我的问题涉及到十六进制。尼说明对我很有用。谢谢你:) – Andy

3

你的正则表达式是要求该整个字符串包括只有这七个十六进制字符。

取出^$字符串中的任何位置找到字符,但要注意abracadabra会“比赛”作为一个六位数的十六进制“数字”(acadab),所以有可能是其他类似的误报。考虑用此代替:

"/\b[0-9a-z]{7}\b/i" 

这样可以避免匹配单词的中间部分。

相关问题