Wyrażenie regularne - co oznacza?

0

Witam,

Mam takie wyrażenie regularne:
/(?:(?: \(([\d]+)\))?(\.[^.]+))?$/

Jak to wygląda w praktyce?

0

Sprawdź tam, skąd to wziąłeś, albo poczytaj o wyrażeniach regularnych (materiałów nie brakuje).

0

Współpracuje z tą funkcją:

protected function upcount_name_callback($matches) {
        $index = isset($matches[1]) ? intval($matches[1]) + 1 : 1;
        $ext = isset($matches[2]) ? $matches[2] : '';
        return ' ('.$index.')'.$ext;
    }

Jest to funkcja do sprawdzania czy na serwerze jest już dany plik. Jeśli jest to skrypt dokleja kolejną liczbę w nawiasie, np.:
test.jpg
test (1).jpg

Chciałbym to edytować tak aby zamiast nawiasów i spacji wstawiany był tylko myślnik czyli:
test-1.jpg

Niestety ale edycja powyższej funkcji nie daje efektu, muszę edytować wyrażenie ale mimo pomocy tutoriali nie mogę rozszyfrować tego wyrażania.

0

tamto wyrażenie dopasowywuje końcówkę stringa - spację, liczbę w nawiasie, kropkę i przynajmniej jedną niekropkę - podejrzewam, że jest użyte w preg_replace, albo podobnym - żeby pozbyć się tej końcówki, następnie dokleić kolejną

0

No dobra, usunięcie spacji to kwestia zmiany na:

/(?:(?:(([\d]+)\))?(\.[^.]+))?$/

i

return '('.$index.')'.$ext;

Ale jak pozbyć się nawiasu?

0

Na szybko. Źle usunąłeś spację, bo usunąłeś jeszcze potem backslasha.

/(?:(?:(-[\d]+))?(\.[^.]+))?$/
return '-'.$index.$ext;

1 użytkowników online, w tym zalogowanych: 0, gości: 1