Hej hej przedszkolaki ... i nie tylko

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)){
$products = array($products);
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==''){
echo '<div class="counter"></div>'; }else{
// aby mieć wgląd w to co się dzieje przechowuję tymczasowo te elementy w których dokonuję zmian w pliku tekstowym
$file = fopen('temp.txt','w');
// 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';
$testfile = fopen('testfile.txt','w'); }
}
$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 ?
Ten post edytował PHPRexio 16.11.2016, 22:06:53