【发布时间】:2012-10-02 00:31:52
【问题描述】:
我正在尝试编写从 CSS 代码中提取所有十六进制颜色的正则表达式。
这就是我现在拥有的:
代码:
$css = <<<CSS
/* Do not match me: #abcdefgh; I am longer than needed. */
.foo
{
color: #cccaaa; background-color:#ababab;
}
#bar
{
background-color:#123456
}
CSS;
preg_match_all('/#(?:[0-9a-fA-F]{6})/', $css, $matches);
输出:
Array
(
[0] => Array
(
[0] => #abcdef
[1] => #cccaaa
[2] => #ababab
[3] => #123456
)
)
我不知道如何指定只匹配以标点符号、空格或换行符结尾的颜色。
【问题讨论】:
-
不要使用正则表达式。请参阅@modu 的回答。
if(ctype_xdigit($color) && strlen($color)==6).