Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] zasotosowanie preg_match dla funkcji str_replace
Forum PHP.pl > Forum > Przedszkole
troian
Witam, trafiła mi się tragiczna baza danych z ogłoszeniami, niestety jest ona zbyt duża aby ręcznie kopiować opisy i postanowiłem wyeksportować ją a następnie wygenerować nowe zapytania aby przenieść tą bazę, wszystko działa świetnie niestety osoba pisząca te ogłoszenia powstawiała znaczniki style dla elementów p,h1,h2,h3 itp i problem w tym że muszę się tego pozbyć jednak co wpis style to inne znaczniki chciałem najpierw zrobić to na zasadzie str_replace('font-size:15;','',$content); jednak ilość możliwych kombinacji z liczbą oraz spacjami po między 14px[space]; jest OGROMNA, dlatego chce się dowiedzieć czy w jakiś sposób można wykorzystać preg_match do wyszukiwania styke"[zwartosc]" i całkowitego jego usuwania?
kapslokk
http://stackoverflow.com/questions/5517255...-from-html-tags

  1. $output = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $input);
troian
Cytat(kapslokk @ 14.10.2016, 11:18:27 ) *
http://stackoverflow.com/questions/5517255...-from-html-tags

  1. $output = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $input);


Dzięki wielkie, nawet nie wpadło mi do głowy aby poszukać czegoś takiego w google
SmokAnalog
Nie lepiej użyć parsera DOM? Wyrażenia regularne do zmian w drzewie dokumentu to jest najczęściej kiepski pomysł i w tym przypadku jest również kiepski. Co na przykład, jeśli zamiast cudzysłowu są apostrofy? Za dużo jest pułapek w takiej zamianie na pałę, no ale oczywiście jest pytanie - jest odpowiedź.

Jeśli ktoś zapyta: która szczoteczka do zębów jest najlepsza do umycia toalety, odpowiedzi nie wyjdą najczęściej poza świat mycia toalety szczoteczką, a to błąd.

Moim zdaniem, jeśli jest jakakolwiek szansa, że są inne style, które powinny zostać zachowanie, powinieneś przejść drzewo parserem DOM w poszukiwaniu wszystkich interesujących Cię elementów z atrybutem style, a następnie wyciąć z nich tylko te style, które mają zostać usunięte. Jeśli nic nie zostanie, dopiero wtedy usunąć atrybut style.
viking
Jest też jeszcze jedna opcja. HTMLPurifier, przeczyścić nim cały kod, użyć Tidy (bo tu najwyraźniej może być cokolwiek w tym niepoprawny tekst) a niedozwolone tagi i atrybuty usunąć.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.