0

たとえば、画像は含まれているが「php」は含まれていないURLを書き直そうとしています。

私はこれに一致させたい:

http://domain.com/trees.jpg

そしてそれをこれに書き直します:

http://domain.com/viewimg.php?image=trees.jpg

しかし、これと一致しない:

http://domain.com/index.php?image=trees.jpg

'php'が含まれているため、そのURLへの書き換えは一切行わないでください。

私は正規表現が苦手ですが、さまざまなバリエーションを試してきましたが、どれもうまくいきませんでした。これが私が試した1つのバリエーションの例です:

url.rewrite-once = (
"(?!php\b)\b\w+\.(jpg|jpeg|png|gif)$" => "/viewimg.php?image=$1.$2"
)

どんな助けでも大歓迎です、ありがとう。

4

1 に答える 1

1

これで始められるはずです。\.php後ろのどこかに文字列があると一致に失敗します\w+\.(jpg|jpeg|png|gif)

パターン:(?<!.*\.php.*)\b(\w+\.(jpg|jpeg|png|gif))$

交換:viewing.php?image=$1

テスト済み:

http://domain.com/trees.jpg  --->  http://domain.com/viewing.php?image=trees.jpg
http://domain.com/index.php/trees.jpg  ---> http://domain.com/index.php/trees.jpg
http://domain.com/index.php/image=trees.jpg  ---> http://domain.com/index.php/image=trees.jpg

編集:

上記では、長さが一定でない後読みを使用していますが、これは明らかに多くのプラットフォームではサポートされていません。これがなければ、純粋な正規表現で「ABC が文字列のどこにもないときに XYZ に一致する」ことを成文化できるかどうかわかりません。たぶん、私よりも多くの正規表現を持っている人が方法を知っています。

やや一般的ではない解決策として、これは固定文字列.php?image=が画像名の直前に来ていないかどうかのみをチェックします:

パターン:(?<!\.php\?image=)\b(\w+\.(jpg|jpeg|png|gif))$

交換:viewing.php?image=$1

于 2012-08-21T18:13:35.403 に答える