Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] zasotosowanie preg_match dla funkcji str_replace
troian
post 14.10.2016, 10:16:37
Post #1





Grupa: Zarejestrowani
Postów: 184
Pomógł: 2
Dołączył: 3.02.2013

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
kapslokk
post 14.10.2016, 10:18:27
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


http://stackoverflow.com/questions/5517255...-from-html-tags

  1. $output = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $input);
Go to the top of the page
+Quote Post
troian
post 14.10.2016, 10:31:54
Post #3





Grupa: Zarejestrowani
Postów: 184
Pomógł: 2
Dołączył: 3.02.2013

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
SmokAnalog
post 14.10.2016, 11:10:25
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
viking
post 14.10.2016, 11:19:33
Post #5





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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ąć.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 02:48