10

どうすれば変換できますか

ereg_replace(".*\.(.*)$","\\1",$imgfile);

preg_replace... ?

?

私はそれで問題を抱えていますか?

4

3 に答える 3

20

ereg パターンを preg に移植するには、主に 4 つのことを知っておく必要があります。

  1. 区切り記号(/) を追加します。'pattern' => '/pattern/'

  2. パターンの一部である場合は区切り文字をエスケープ'patt/ern' => '/patt\/ern/'
    します。次の方法でプログラムで実現します。
    $ereg_pattern = '<div>.+</div>';
    $preg_pattern = '/' .addcslashes($ereg_pattern, '/') . '/';

  3. eregi (大文字と小文字を区別しないマッチング):'pattern' => '/pattern/i'したがって、大文字と小文字を区別しない eregi 関数を使用している場合は、新しいパターン ('/pattern/') の末尾に 'i' を追加するだけです。

  4. ASCII 値: ereg では、パターンで数値を使用すると、文字の ASCII を参照していると見なされます。ただし、preg では数値は ASCII 値として扱われません。そのため、パターンの ereg 式に ASCII 値が含まれている場合 (改行、タブなど)、それを 16 進数に変換し、前に \x を付けます。
    Example: 9(tab) becomes \x9 or alternatively use \t.

これが役立つことを願っています。

于 2013-06-10T22:26:27.493 に答える
11
preg_replace("/.*\.(.*)$/", "\\1", "foo.jpg")

/PHPで区切り文字が必要な理由がわかりません。Perl、JSなどがそれらを持っている唯一の理由は、PHPが許可していない正規表現リテラルを許可していることです。

于 2010-03-14T21:49:26.037 に答える
1

この場合、式の先頭と末尾に任意の文字を追加し、伝統的に「/」文字を追加しますpreg_replace('/.*\.(.*)$/',"\\1",$imgfile);。正規表現はあまり良くありません。

正規表現は遅いので、これを使用してください。$extension=substr($imgName,strrpos($imgName,'.'));

于 2010-03-14T21:47:17.220 に答える