Axelarge Posted March 7, 2004 Report Posted March 7, 2004 Sveiki. Kersos pa taisno pie lietas. Mana skripa dala izskatas sadi: if( eregi('<link(.*?)>(.*?)</link>', $line) ) { $links[] = array( "href"=>eregi_replace('<link(.*?)href=\"(.*?)\"(.*?)>(.*?)</link>', '\\2', $line), "target"=>eregi_replace('!target=\"(.*?)\"!', '\\1', $line), "text"=>eregi_replace('<link(.*?)>(.*?)</link>', '\\2', $line), ); } Ta jega ir atkodet kautko sadu: <link target="_new" href="http://">Link1</link> un, kaa varbut saprotams pieskirt targetu $links[]['target'], utt. Diemzel si te rindina: "target"=>eregi_replace('!target=\"(.*?)\"!', '\\1', $line), ir baigi "greedy" un man izmet maximaali garo variantu, tatad _new" href="http:// ja es aiz (.*?) ielieku U, tad viss galigi saiet sviestaa un man jebkuraa gadijienaa izmet "Link1" :ph34r: Varbut kads varetu palidzet?
рпр Posted March 8, 2004 Report Posted March 8, 2004 eregi_replace('!target=\"(.*?)\"!', '\\1', $line) vispār tev nenāktu par ļaunu regulās ekspresijas manuāļus palasīt, jo tā vien liekas, ka pāris lietas tu esi izzīdis no pirksta: ! - ko tas nozīmē? šajā gadījumā pirms dubultpēdiņām nav jāliek beksleši, jo strings, kas ir singlepēdiņās netiek parsēts, otrkārts dubultpēdiņas nav regexp īpašais čarakters. (.*?) - arī nav nekas loģisks, jo * nozīmē, ka . var būt 0 līdz bezgalībai garš, bet ? tajā pašā laikā nozīmē, ka tas ir viens čarakters. šajā gadījumā tev ieteiktu lietot (.+). replacements - '\\1' - šeit labāk likt tikaivienu bakslašu, jo kā jau teicu, tad strings parastajās pēdiņās netiek parsēts. galu galā es rakstītsu kautko līdzīgu: eregi_replace('target="([^"]*)"', '\1', $line)
Axelarge Posted March 8, 2004 Author Report Posted March 8, 2004 (edited) Hrm, es nezinu cik aizmidzis biju kad raxtiju so skriptu... Regexos jau taa neko nejeedzu, un veel... (.*?) es raavu no sejienes No saakuma centos videjo regexu raxtit ka 1. un 3.o, nesanaca (jo 1. un 3. nav iespejas panemt kautko lieku), bet protams ar to nesanaca un tad saku sviestoties. Es jau mekleju palidzibu dazados irc chanos bet neviens nevareja palidzet. Tapec liels paldies :) EDIT: Skripts workoja ari pectam kad izlaboju savu galveno (loti debilo) kludu ar backslashiem rindina izskatas shadi: "target"=>eregi_replace('<link(.*?)target="(.*?)"(.*?)>(.*?)</link>', '\2', $line), Edited March 8, 2004 by Axelarge
Recommended Posts