2017-03-07 12 views
1

globを使用してファイルを表示していて、各ファイル名を手動で入力したくない場合は、array_diffを使用して削除します。それ以外の方法は、番号を持つファイル名を検索し、それらの要素を削除することでこれを改善する方法です。PHP:array_diff文字列に数字のない要素をすべて削除する

$dirs = 'D:/'.$type_of_store.'/LAB/'.$theSub.'/'.$subSub;      
$theDirs = array_diff(glob($dirs.'/*.xml', GLOB_BRACE), 
array(
'.', 
'..', 
'D:/'.$type_of_store.'/LAB/'.$theSub.'/'.$subSub.'/PosDataUpdatesStatus.xml', 
CommCenterManagerConfig.xml, 
ExternalReferences.xml 
) 
); 

ファイル出力

CommCenterManagerConfig 
ExternalReferences 
PosDataUpdates-2016-10-27 094721 
PosDataUpdates-2016-11-21 104425 
PosDataUpdates-2016-11-21 110226 
PosDataUpdates-2016-11-22 014654 
PosDataUpdates-2016-11-22 062805 

数を有し、かつ配列要素にそれを削除する文字列を検索する他の方法はありますか?

私のファイルが含まれているだけで文字列を表示する必要がある番号

PosDataUpdates-2016-10-27 094721 
PosDataUpdates-2016-11-21 104425 
PosDataUpdates-2016-11-21 110226 
PosDataUpdates-2016-11-22 014654 
PosDataUpdates-2016-11-22 062805 

答えて

2

なぜないの入力を通じて、単に「グレップ」?そして、私は

...あなたは、もう少し正確な将来に驚きを防ぐために一致させようことを示唆しているこの単純な例を見てみましょう:

<?php 
$folders = [ 
    '.', 
    '..', 
    'CommCenterManagerConfig', 
    'ExternalReferences', 
    'PosDataUpdates-2016-10-27 094721', 
    'PosDataUpdates-2016-11-21 104425', 
    'PosDataUpdates-2016-11-21 110226', 
    'PosDataUpdates-2016-11-22 014654', 
    'PosDataUpdates-2016-11-22 062805', 
]; 
$pattern = '/^PosDataUpdates-[0-9-]{4}-[0-9-]{2}-[0-9-]{2}\s[0-9]{6}$/'; 
print_r(preg_grep($pattern, $folders)); 

を上記の例の出力は次のとおりです。

Array 
(
    [2] => PosDataUpdates-2016-10-27 094721 
    [3] => PosDataUpdates-2016-11-21 104425 
    [4] => PosDataUpdates-2016-11-21 110226 
    [5] => PosDataUpdates-2016-11-22 014654 
    [6] => PosDataUpdates-2016-11-22 062805 
) 

、あなたのファイルシステムへのアクセスタスクにその戦略を適用する場合、そのような単純なものでは結果になります:

<?php 
define('BASEDIR', './data/'); 
$folders = glob(BASEDIR . '*.xml'); 
$pattern = '/PosDataUpdates-[0-9-]{4}-[0-9-]{2}-[0-9-]{2}\s[0-9]{6}/'; 
print_r(preg_grep($pattern, $folders)); 

はそれの出力は次のようになります。

Array 
(
    [2] => ./data/PosDataUpdates-2016-10-27 094721.xml 
    [3] => ./data/PosDataUpdates-2016-11-21 104425.xml 
    [4] => ./data/PosDataUpdates-2016-11-21 110226.xml 
    [5] => ./data/PosDataUpdates-2016-11-22 014654.xml 
    [6] => ./data/PosDataUpdates-2016-11-22 062805.xml 
) 

必要に応じて明らかにパスとファイル名の拡張子の問題に対処することができます。

関連する問題