2016-08-02 11 views
3

私はそれの一部を削除したい文字列を持っている:私が試した文字列で240x670を取得して削除しますか?

string_string_string_.bmp 
string_string_string_.bmp 
string_string_string_.bmp 

string_string_string_240x670.bmp 
string_string_string_550x450.bmp 
string_string_string_250x950.bmp 

私は数部分240x670 .bmpの

を削除するにはなるだろう

$a = preg_replace('[0-9]x[0-9]', '', $a); 

でも成功しません。

+0

あなたはいつも最後に 'bmp'拡張子を持っていますか? –

+0

@WiktorStribiżewyeah!ただ232x323を削除したい –

+1

https://regex101.com/r/mB6sK9/1を参照してください –

答えて

2

注意を使用しています。パターンを区切るには、共通の/.../または~...~を使用します。

あなたはファイルが常にbmp拡張子を持っていると言うので、私は

'~_[0-9]+x[0-9]+\.bmp$~' 

the demo

詳細を参照してください示唆するつもりだった。

  • _ - アンダースコア
  • をから1桁以上
  • x
  • から x
  • [0-9]+から1桁以上
  • \. - ドット
  • bmp - リテラル文字列bmp
  • $ - 文字列の末尾。拡張子は任意のすることができた場合

、あなたはまた、ファイル名にパスとだけ仕事を分割するpathinfoを活用する:

ここ
$s = "string_string_string_240x670.bmp"; 
$p = pathinfo($s); 
if (isset($p["filename"])) { 
    echo preg_replace('~_\d+x\d+$~', '_.', $p["filename"]) . $p["extension"]; 
} 

_\d+x\d+$は、あなたが持っているもの延長気にしません。文字列(ファイル名)の末尾に最後の_ + digits + x + digitsを置き換えます。

は正規表現/\d+x\d+/gがあなたのために動作しますPHP demo

2

だけでPHPの正規表現はregex delimitersを使用し、ペアリング外[...]を区切り文字として扱われているので、あなたの正規表現は、実際に0-9]x[0-9として解析されていることを

$a = preg_replace('/\d+x\d+/', '', $a); 
0

を参照してください。

$re = "/\\d+x\\d+/"; 
$str = "string_string_string_240x670.bmp\nstring_string_string_550x450.bmp\nstring_string_string_250x950.bmp"; 
$subst = ""; 

$result = preg_replace($re, $subst, $str); 

結果は次のようになります。

string_string_string_.bmp 
string_string_string_.bmp 
string_string_string_.bmp 

Demo and Explaination

+0

あなたは@horcruxの答えを複製していると思います。 – revo

+0

@revo Ohhh ..私はすでにそれが存在していることを確認していません。 –

関連する問題