获取字符串中的颜色代码

时间:2014-08-05 08:16:15

标签: php

我有一个像

这样的字符串
<font color="#ffffff">Heippa </font><b><i><u><font face="Calibri" color="#e71818">rallaa</font></u></i></b>

我需要将所有颜色代码分隔成一个数组

['#ffffff','#e71818']

有一种简单的方法可以做到这一点。我知道您可以使用 strrchr 查找所有#标记和 substr($ color,0,7),但这样会打印出最后找到的标记。

感谢您的建议。

2 个答案:

答案 0 :(得分:1)

 $input='<font color="#ffffff">Heippa </font><b><i><u><font face="Calibri" color="#e71818">rallaa</font></u></i></b>';   
 preg_match_all("/#[0-9a-f]{6}/i", $input, $output);
 print_r($output);

答案 1 :(得分:0)

此示例适用于您的HTML:

<?php

$html = '<font color="#ffffffa">Heippa </font><b><i><u><font face="Calibri" color="#e71818">rallaa</font></u></i></b>';

$matches = array();

$found = preg_match_all('/#(?:[0-9a-f]{3}){1,2}/i', $html, $matches, PREG_PATTERN_ORDER);

if ($found) {

    $result = array();

    foreach ($matches[0] as $m) {
        // Key $m for unique result:
        $result[$m] = $m;
    }

    print_r($result);

}

但不适用于此HTML:

color="#0123456789abcdef"  // will match #012345
color="red"