-3

重複の可能性:
php正規表現文字列の最後の部分を取得するにはどうすればよいですか

ファイル名から特定の文字列の後に拡張子が付いた文字列を削除したい。上記のファイル名C14-IMAGE-BACK-PREVIEW-TEST-1349965063.docで、パーツ-1349965063を削除したい。ファイルを削除した後名前はC14-IMAGE-BACK-PREVIEW-TEST.docである必要があります

4

3 に答える 3

0

次を使用できます:http substr//php.net/manual/en/function.substr.php

これは、文字列の最初の部分の長さが一定である場合にのみ機能します。

$string = 'C14-IMAGE-BACK-PREVIEW-TEST-1349965063.doc';
$start = 0;
$length = 27;
$first_part = substr($string, $start, $length);

次に、拡張機能を最後に追加し直します。


長さが一貫していない場合の代替案:

$string = 'C14-IMAGE-BACK-PREVIEW-TEST-1349965063.doc';
$ext = pathinfo($string);
$parts = explode('TEST', $string);
$filename = $parts[0] . 'TEST' . $ext['extension'];

名前が絶えず変化しているが、ハイフン構造が維持されている場合は、ハイフンで爆発する可能性があります。次に、タイムスタンプである最後の配列エントリを無視します。

$string = 'C14-IMAGE-BACK-PREVIEW-TEST-1349965063.doc';
$ext = pathinfo($string);
$parts = explode('-', $string);
$file = '';
for ($i = 0; $i < count($parts) - 1; $i++)
{
    $file .= $parts[$i]; 
}
$file .= $ext['extension'];
于 2012-10-11T15:02:05.927 に答える
0
$str = 'C14-IMAGE-BACK-PREVIEW-TEST-1349965063.doc';
$str = preg_replace('/^(.*)-(\d+)(\.doc)$/',"$1$3",$str);
于 2012-10-11T15:02:07.890 に答える
0

これは私がしたことです:

<?php
$name = "C14-IMAGE-BACK-PREVIEW-TEST-1349965063.doc";
$new_name = $name;
$search = "TEST";
$position =  strpos($name, $search);
$ext = pathinfo($name);
if($position !== false && !empty($ext['extension']))
{
    $new_name = substr($name, 0, $position + strlen($search)) . '.' . $ext['extension'];
}
var_dump($new_name);
于 2012-10-11T15:08:59.540 に答える