-2

URLの配列を保存しています。すべてのURLにはいくつかの形式があります。URL配列を並べ替える必要があります。好き

https://s3.amazonaws.com/photos/1358086239.jpg?response-content-type=image%2Fjpeg&AWSAccessKeyId=AKIAI2U3TRTNGXNCQHYQ&Expires=1359636889&Signature=l9GnekYT0wK9AznkPWWjBuCRgBY%3D
https://s3.amazonaws.com/photos/1358066630.jpg?response-content-type=image%2Fjpeg&AWSAccessKeyId=AKIAI2U3TRTNGXNCQHYQ&Expires=1359636889&Signature=l9GnekYT0wK9AznkPWWjBuCRgBY%3D

これらのURLは、amazon S3 PHPSDKget_object_urlメソッドによって返されます。

私はこれらのURLを1000個持ってい1358086239.jpgますが、値に基づいてこれらのURLを並べ替えたいのですが、この値は常に整数値であり、この値に基づいてAsc順にURLを並べ替えたいと思います。

これらのURL配列を並べ替えるにはどうすればよいですか。php組み込み関数ksort()を使用してみましたが、役に立ちませんでした。

4

5 に答える 5

2

さて、このようなもの...

usort($array, function($a, $b) {
  $aKey = substr($a, 33, 10);
  $bKey = substr($b, 33, 10);
  return $aKey < $bKey;
}
//$array is sorted now
于 2013-01-31T12:54:44.760 に答える
1

URLをループして、それぞれを配列に割り当ててみてください。ここで、keyはファイル名の番号になります。次に、キーで並べ替えるだけで...完了です。

必要なものは次のとおりです。

于 2013-01-31T12:45:19.563 に答える
1

sed 's/photos\/\([0-9]+.jpg\)/\1/' | sortファイル名を順番に付けます。最初のgrep -f入力としてそれを使用し、2番目の入力としてURLを使用すると、目的の出力が生成されます。

于 2013-01-31T12:46:27.097 に答える
1

これを試してください(修正済み):

$urls = array(
'https://s3.amazonaws.com/photos/1358086239.jpg?response-content-type=image%2Fjpeg&AWSAccessKeyId=AKIAI2U3TRTNGXNCQHYQ&Expires=1359636889&Signature=l9GnekYT0wK9AznkPWWjBuCRgBY%3D',
'https://s3.amazonaws.com/photos/1358066630.jpg?response-content-type=image%2Fjpeg&AWSAccessKeyId=AKIAI2U3TRTNGXNCQHYQ&Expires=1359636889&Signature=l9GnekYT0wK9AznkPWWjBuCRgBY%3D',
);


$list = array();
foreach ($urls as $v) {
   $tmp = explode('https://s3.amazonaws.com/photos/', $v);
   $tmp = explode('.jpg?response-content', $tmp[1]);

   $list[$tmp[0]] = $v;
} 

ksort($list);

var_dump($list);
于 2013-01-31T12:50:50.490 に答える
1
<?php
$url_array  = array('https://s3.amazonaws.com/photos/1358086239.jpg?response-content-type=image%2Fjpeg&AWSAccessKeyId=AKIAI2U3TRTNGXNCQHYQ&Expires=1359636889&Signature=l9GnekYT0wK9AznkPWWjBuCRgBY%3D', 'https://s3.amazonaws.com/photos/1358066630.jpg?response-content-type=image%2Fjpeg&AWSAccessKeyId=AKIAI2U3TRTNGXNCQHYQ&Expires=1359636889&Signature=l9GnekYT0wK9AznkPWWjBuCRgBY%3D');
$res_aray = array();
foreach($url_array as $val){
   preg_match('/photos\/(?P<numb>\d+)\.jpg/', $val, $matches);   
   $res_aray[$matches['numb']] = $val;
}
ksort($res_aray);
print_r($res_aray);

?>
于 2013-01-31T12:55:05.280 に答える