Axelarge Posted March 7, 2004 Report Share 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? Link to comment Share on other sites More sharing options...
рпр Posted March 8, 2004 Report Share 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) Link to comment Share on other sites More sharing options...
Axelarge Posted March 8, 2004 Author Report Share 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 Link to comment Share on other sites More sharing options...
Recommended Posts