0

さまざまな画像サイズの wordpress 画像名を多数含む文字列があります。例えば:

imgr-3sdfsdf9-266x200.png, pics-asf39-266x800.png, ruh-39-150x200.png

私がする必要があるのは、この種の文字列のすべての画像サイズを文字列「150x150」に置き換えることです。文字列には、サイズの異なる何百もの異なるファイル名が含まれる場合があります。これまでのところ、すべてのサイズは dddxddd の形式になっています。3 桁の後に「x」が続き、さらに 3 桁が続きます。幅または高さが 4 桁になるとは思いません。常に、サイズは .png 拡張子の直前です。したがって、上記の文字列を処理すると、次のようになります。

imgr-3sdfsdf9-150x150.png, pics-asf39-150x150.png, ruh-39-150x150.png

どんな助けでも大歓迎です。

4

3 に答える 3

3
$size = 150;
echo preg_replace(
  '#\d{3,4}x\d{3,4}\.#is',
  "{$size}x{$size}.",
  'imgr-3sdfsdf9-266x200.png, pics-asf39-266x800.png, ruh-39-150x200.png'
);
于 2013-10-17T10:49:20.427 に答える
2

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

$string = 'imgr-3sdfsdf9-266x200.png, pics-asf39-266x800.png, ruh-39-150x200.png';
$string = preg_replace('/(\d{3}x\d{3})\./', '150x150.', $string);

-これで、サイズの後に.ファイル拡張子の区切り文字があることに依存しています。そうでない場合は、交換条件からこれを削除することをお勧めします。

于 2013-10-17T10:47:27.620 に答える
2

preg_replaceを使用すると、次のように目的を達成できます。

$pattern = '/\d+x\d+(\.png)/i';
$replace = '150x150${1}';
$newStr  = preg_replace($pattern, $replace, $initialStr);

この短いデモも参照してください。

簡単な説明

RegEx-pattern:
                       /\d+x\d+(\.png)/i
                        \_/V\_/\_____/ V
       _________         | | |    |    |   ________________
      |Match one|________| | |    |    |__|Make the search |
      |or more  |    ______| |    |___    |case-insensitive|
      |digits   |   |        |        |
             _______|_   ____|____   _|_______________
            |Match the| |Match one| |Match the string |
            |character| |or more  | |'.png' and create|
            |'x'      | |digits   | |a backreference  |

Replacement string:
                     150x150${1}
                     \_____/\__/
     ________________   |    |   ________________________
    |Replace with the|__|    |__|...followed by the 1st  |
    |string '150x150'|          |captured backreference  |
                                |(e.g.: ".png" or ".PNG")|
于 2013-10-17T11:10:17.500 に答える