A preg_replace bulmaca: konunun sonunda sıfır veya bir karakterin daha yerine

0 Cevap php

$ D dizin yolu olduğunu söylüyorlar ve ben o başlar ve tam olarak bir çizgi (/) ile sona erer sağlamak istiyoruz. Bu, ilk olarak, bir ya da daha çok öncü ve / veya eğik arka sıfır olabilir.

Denedim:

preg_replace('%^/*|/*$', '/', $d);

önde gelen slash için ama benim sürpriz getirilerine $ d en az bir arka çizgi varsa two sonunda bölü için çalıştığı. Konu, örneğin, 'foo///' ardından preg_replace () ilk maçı ve yerini ise üç bölü bir çizgi ile eğik ve sonra sıfıra maçlar sonunda bölü ve yerini bir çizgi ile birlikte. (Sen '[$0]' ile ikinci argüman değiştirerek bu doğrulayabilirsiniz.) Ben bu oldukça gariptir bulabilirsiniz.

While there are many other ways to solve the underlying problem (and I implemented one) this became a PCRE puzzle for me: what (scalar) pattern in a single preg_replace does this job?

ADDITIONAL QUESTION (edit)

Bu desen dizenin sonunda öyle bir şekilde eşleşen ancak başında benzer şekilde davranır değil neden açıklayabilir misiniz?

0 Cevap