
Robię taką małą rzecz do szybkiego podmieniania danych co by mi się ludziki nie mordowali z edytowaniem rekordów ręcznie ale nie potrafię (bo nigdy wcześniej tego nie robiłem) wyszukiwać z użyciem regexów. Oczywiście jeśli wogóle tak można bez nadmiernego rozbudowywania skryptów.
Otóż mój prost(acki)y skrypt robi to tak:
// podczas odczytywania sprawdza czy w polu w którym znajduje się np opis produktu występuje wartość ze zmiennej $regex1 // jeśli tak, zamienia na wartość ze zmiennej $regex2 co zresztą widać poniżej. ponieważ jednak są to w większości całe elementy html, // a co za tym idzie nie pozwolą na zmianę całego ciągu znaków a podmienianie po "kawałku" nie wchodzi w grę bo po diabła robić dwa razy ?:) // np "<strong> Delivery: </strong> 3-6 days" kiedy wyszukuję "Delivery: 3-6 days". W tej sytuacji mogę najpierw podmienić "Delivery:" // a następnie "3-6 days" co oczywiście mija się z celem. // i tu pytanie czy i w jaki sposób mogę to osiągnąć ? // czy mogę w inpucie wpisać tak przygotowany ciąg, żeby omijał tagi? czy muszę każdy taki fragment w jakiś sposób obrobić? // czy mogę z poziomu php filtrować tagi i zmieniać tylko te fragmenty które chciałbym zmienić ? while($products = mysqli_fetch_array($prods1)){ foreach($products as $product){ //print_r($product); $prod1 .= '<tr><td class="c">'.$a.'</td><td class="l">'.$product[0].'</td><td class="">'.$product[3].'</td>'; if(($product[13] == '') || (!$product[13])){ }else{ if($regex1==''){ }else{ // aby mieć wgląd w to co się dzieje przechowuję tymczasowo te elementy w których dokonuję zmian w pliku tekstowym // tu powieliłem żeby jedną zmienną ($str2) pokazać na ekranie ze zmienionym tłem dla wyróżnienia co zostało zmienione // drugiej natomiast ($str) użyć do późniejszgo zaktualizowania w tabeli. // tu też przydałoby się jakieś mądrzejsze rozwiązanie ;) no chyba że inaczej się nie da ;) // - miałem na myśli to wyróżnienie zmienionego tekstu bo oczywiście samo zapisywanie do pliku nie będzie konieczne. //replace something in the file string - this is a VERY simple example // zliczamy ilość wystąpienia stringu podczas odczytywania kolejnych wartości z tabeli if($str1){ $ch++;$prod1 .= '<div class="counter"> String changed ' . $ch . ' times </div>'; } // tu dodaję klasę wyróżniającą zmieniony fragment $str2 = str_replace($regex1, '<b alt="this string was changed" class="red">'.$regex2.'</b>', $str2); $testfile = 'testfile.txt'; } } $prod1 .= '<td class="bc">'.$product[13].'</td><td class="ac">'.$str2.'</td></tr>'; }$a++; }
Obraz poniżej przedstawia jak wygląda wyróżniony tekst po zmianie.
Jakieś sugestie w w/w kwestii panowie i panie ?