我有一个像
这样的字符串<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),但这样会打印出最后找到的标记。
感谢您的建议。
答案 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"