У меня есть несколько URL-путей в виде:
/cat/_CNAME_(/_SUB_(/_SUB_))(/_ATR_/_ATRVAL_(/_ATR_/ATRVAL_))(/page/_PNUM_)
, которые необходимо преобразовать в:
/cat/_CNAME_(/_SUB_(/_SUB_))(/page/_PNUM_)?(_ATR_=_ATRVAL_(&_ATR_=_ATRVAL_))
Некоторые пояснения:
- CNAME , SUB , ATR , ATRVAL & PNUM являются динамическими
- SUB , ATR => ATRVAL , page => PNUM являются необязательными, оставляя CNAME как единственный обязательный термин вURL-путь
- SUB и ATR => ATRVAL может присутствовать несколько раз
- Единственный способ отделить SUB из ATR => ATRVAL означает, что имя ATR всегда начинается с 'attr_' или 'prod_', в то время как другие термины не будут иметьэтот префикс
Это означает, что следует преобразовать следующие пути:
this
/cat/magazines/lifestyle/attr_shape/portrait/prod_cat/lifestyle/
в
/cat/magazines/lifestyle/?attr_shape=portrait&prod_cat=lifestyle
this
/cat/magazines/attr_shape/landscape/page/5/
до
/cat/magazines/page/5?attr_shape=landscape
это
/cat/magazines/lifestyle/attr_shape/square/attr_size/20x20/page/2
до
/cat/magazines/lifestyle/page/2?attr_shape=square&attr_size=20x20