martins256 Posted November 24, 2007 Report Share Posted November 24, 2007 Gribēu uztaisīt funkciju, kas html failā, vadoties pēc tagiem, kādā vietā kaut ko aizvieto. Funkcijai tiek padoti tagi un teksts kas jāliek iekšā. Taisīju tā, ka var tikt padoti vairāki tagi, jo tak html arī var būt vairākās vietās "<ul>"... Diemžēl viss nestrādā kā nākas. PHP 5.2.4 pati funkcija: http://paste.php.lv/6479 izpildot inner_add(array('div','p'),'asd'); viss notiek inner_add(array('div','div','div','div'),'asd'); notiek inner_add(array('kreisais_tag'),'asd'); notiek // tāda taga kodā nav! inner_add(array('div','div','p'),'asd'); nenotiek //preg_replace apēd visu, errori nav, darbība var notikt tālāk.... esmu tiešām nesaprašanā kur tā kļūda... šādi izskatās tie $regex un $replace #<div(.*?)>(.*?)<div(.*?)>(.*?)<div(.*?)>(.*?)<div(.*?)>(.*?)(.*?)</div>(.*?)</div>(.*?)</div>(.*?)</div>#is <div${1}>${2}<div${3}>${4}<div${5}>${6}<div${7}>${8}asd${9}</div>${10}</div>${11}</div>${12}</div> #<div(.*?)>(.*?)<p(.*?)>(.*?)(.*?)</p>(.*?)</div>#is <div${1}>${2}<p${3}>${4}asd${5}</p>${6}</div> Link to comment Share on other sites More sharing options...
martins256 Posted November 30, 2007 Author Report Share Posted November 30, 2007 Pēc šī raksta sanāk, ka es pārāk daudz izmantoju .*?, kas bremzē visu padarīšanu un, pēc manām domām, preg replace notiek kkāds timeout... .*? The reason to any slow regex! Ja es norādu kā parametru, cik reizes vajag aizvietot, tad viss notiek kā tam būtu jābūt (ja norādu 4, kas ir max, notiek. ar 5 vairs nesanāk). Piemēram, Regular Expression Test Tool un arī offline testeris strādā kā vajag(kad taisa to replace, iesēžas gan uz pāris sec.) Tātad jābūt kaut kādam risinājumam... Varbūt tos .*? var aizvietot ar ko citu, kas neprasītu tik daudz resursu? vai kkā mēģināt skaitīt tās reizes, cik sanāk? Link to comment Share on other sites More sharing options...
Recommended Posts