以下是我从文本文件中获取图像数据的代码:
while (!feof($fh)) {
$line = fgets($fh);
$lines[] = $line;
$match1 ="/^[0-9]{1,3},[0-9]{1,3}/";
$match2 = "/[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},(?:,?[0-9]{1,3})*(?:\.[0-9]{1,10})?\b/";
$parts = preg_match($match1, $line, $regs);
$parts2 = preg_match($match2, $line, $regs2);
foreach($regs as $key => $lame) {
$lamer[] = $lame;
}
foreach($regs2 as $key => $lame2) {
$lamer2[] = $lame2;
}
}
第一个preg_match获取coords,第二个获取rgba()数据。 我想把它放到一个javascript数组中,但是我收到了这个错误:
SyntaxError: too many constructor arguments
我认为javascript数组的数据太多了。
现在我想知道如何或者是否可以跳过数组中的数据,即coords 有一个带有0 alpha的rgba,这意味着我必须跳过这两个。
我也想知道我是否应该尝试将两个匹配合并为一个,看看是否会让它更容易,但我不知道该怎么做。
以下是我使用的数据,即300x180图像:
41,6: (255,255,255, 0) #FFFFFF00 srgba(255,255,255,0) 42,6: (255,255,255, 0) #FFFFFF00 srgba(255,255,255,0) 90,35: ( 77, 80, 12, 98) #4D500C62 srgba(77,80,12,0.384314) 91,35: ( 95, 99, 13, 78) #5F630D4E srgba(95,99,13,0.305882) 92,35: ( 96, 99, 31, 90) #60631F5A srgba(96,99,31,0.352941) 93,35: (106,110, 14, 68) #6A6E0E44 srgba(106,110,14,0.266667) 94,35: ( 95, 99, 13, 78) #5F630D4E srgba(95,99,13,0.305882)
答案 0 :(得分:0)
使用JavaScript RegExp模式
^(\\d+),(\\d+)[^#]+#.{6}(?!00)[^(]+\\((\\d+),(\\d+),(\\d+),(\\d*(?:\\.\\d*)?)
检查this demo。