Edycją własnego komentarza Usera ze znacznikami HTML

Odpowiedz Nowy wątek
2020-02-09 19:17

Rejestracja: 2 tygodnie temu

Ostatnio: 1 godzina temu

0

Witam. Do rzeczy. Zaimplementowałem pewnego rodzaju zabiegi na stringu komenta wpisywanego przez usera. Np. rozpoznawianie linków url, hastagów #. Program kowertuje string na html i wyświetla go z bajerami w przeglądarce. I teraz tak. User ma ochotę poprawić taki właśnie swój wpis. Przygotowałem dla Usera opcje edit. Otwiera się text box i ładowany zostaje do niego... przetworzony string ze znacznikami html.

Ok. User jest w stanie sobie to ominąć... ale 1) muszę wyłączyć ponowne formatowanie tego stringu, bo wyjdzie mi z tego absolutny groch z kapustą. A zatem możliwe jest tylko przetwarzanie string na elementy html - tylko i wyłącznie w pierwszym przebiegu, czyli podczas zapisu nowego komenta, bo potem muszę wyłączyć.

I teraz pytanie do Panów Szlachty PHP. Czy istnieją jakieś funkcje php, które spowodowały by coś takiego: Wyświetlenie w textbox (do edycji) sformatowane linki w HTML w sposób HTML-wizualny... i po drugie w jakiś sposób uchroniłyby kod przed ponownym przetowrzeniem przez mój programik:

1) rozpoznanie adresu http://... https://... ftp://... itd
2) rozpoznanie #LinkuDoTwitteraHasztag
3) rozpoznanie @LinkuDoProfilunaTwitterze

...bo jak nie ma to muszę pisać wszystko od początku i zamieniać przerbonione już linki, spowrotem na zwykły tekst, który po edycji przez usera, mógłby zostać spowrotem zamieniony na efektowne linki w HTML do wyświetlenia na stronie.

Przeprasza czy to jest zrozumiałe to co napisałem?
Serdecznie pozdrawiam i dziękuję za odpowiedź.

Kuba

edytowany 1x, ostatnio: Jakub Prażmowski, 2020-02-09 19:18

Pozostało 580 znaków

2020-02-09 19:32

Rejestracja: 5 lat temu

Ostatnio: 47 minut temu

0

Spróbuj pokombinować z taką biblioteką (lub podobnymi): https://github.com/michelf/php-markdown

Pozostało 580 znaków

2020-02-09 19:41

Rejestracja: 2 tygodnie temu

Ostatnio: 1 godzina temu

0
serek napisał(a):

Spróbuj pokombinować z taką biblioteką (lub podobnymi): https://github.com/michelf/php-markdown

No rzuciłem okiem. Nie ma szans. Nie mam zamiaru spędzię eonów lat świetlnych grzebiąc w tym. Ale przyszedł mi do głowy pewien pomysł. Zamienianie kawałków kodu na ">#" i "@>@" "#342324234# Jakieś znaczki, znaczniki tego typu, aby potem można było na ich podstawie funkcją str_replace podmieniać je. Ale masakra by była przy tym.

Wystarczająco dużo się nakombinowałem, żeby zrobić wyławianie adresów http i linków do twittera. Wydaje mi się, że nie pozostaje mi nic innego tylko odkręcanie tego z poziomu PHP, spowrotem do stringu.

"Jak już zmieliłeś pół świniaka ręczną maszynką do mielenia mięsa... to musisz zmielić resztę."

Pozostało 580 znaków

2020-02-09 19:42

Rejestracja: 6 lat temu

Ostatnio: 14 minut temu

1

Musisz sobie to napisać

Nieeeeeeeeeeeeeeee... Nie implementuje tego! - Jakub Prażmowski 2020-02-09 19:43

Pozostało 580 znaków

2020-02-09 19:43

Rejestracja: 5 lat temu

Ostatnio: 47 minut temu

2

No to poczytaj sobie o regex, są przykłady zamiany tekstu na url w necie. Analogicznie zrobisz z twitterem, itp.

Regex wywołujesz przed wyświetleniem postów.

edytowany 1x, ostatnio: serek, 2020-02-09 19:46
Regex to jest... koszmar przed którym uciekam na pierwsze piętro w horrorze. - Jakub Prażmowski 2020-02-09 19:45

Pozostało 580 znaków

2020-02-09 19:46

Rejestracja: 4 lata temu

Ostatnio: 3 godziny temu

Lokalizacja: Piwnica

Hm, a nie możesz użyć jakiegoś TinyMCE i zaimplementować jako edytor do komenta?


Wiesz, jaki jest „najbardziej zaawansowany” to bawiam się, że nikt w mojej wiosce nie byłby w stanie go uwarzyć. - Jakub Prażmowski 2020-02-09 19:51

Pozostało 580 znaków

2020-02-09 19:48
Moderator

Rejestracja: 12 lat temu

Ostatnio: 6 minut temu

Lokalizacja: Wrocław

2

Dlaczego renderujesz komentarze w trakcie zapisu do bazy?

Problem by nie istniał, gdybyś renderował komentarze w momencie wyświetlania - tak jak np. masz tutaj na forum: zapisujesz oraz edytujesz markdown, który jest renderowany do HTMLa dopiero w momencie wczytywania postu z widoku forum.


edytowany 1x, ostatnio: Patryk27, 2020-02-09 19:49

Pozostało 580 znaków

2020-02-09 19:53

Rejestracja: 2 tygodnie temu

Ostatnio: 1 godzina temu

0
Patryk27 napisał(a):

Dlaczego renderujesz komentarze w trakcie zapisu do bazy?

To ja stanę w kącie za karę.

Nie chciałem zbytnio obciążać serwera... - Jakub Prażmowski 2020-02-09 19:54
W takim razie zrób benchmark i porównaj obydwa rozwiązania :-) O ile nie uruchamiasz kodu na Atmedze bądź nie planujesz obsługiwać kilkuset tysięcy użytkowników jednocześnie, prawdopodobnie nawet nie zauważysz różnicy. Pamiętaj: nie rób optymalizacji na czuja. - Patryk27 2020-02-09 19:56
"Przepraszam czy jak się odtwarza animowany GIF w kółko, to opłata pobierana jest za każdym razem?" - Jakub Prażmowski 2020-02-09 19:57

Pozostało 580 znaków

2020-02-09 20:03

Rejestracja: 2 tygodnie temu

Ostatnio: 1 godzina temu

0

Wiem co zrobię. Maksimum efektu, zero wysiłku. Na dzień dobry postawię znak, że "efektowne linki" działają tylko przy pierwszym zapisaniu "wpisu" albo "komenta". A później... to dobrze że się wszystko nie sypie.

Biorąc pod uwagę, poziom zawiłości dla potencjalnego zupełnie niewinnego usera, to nie będę mu w ogóle zawracał głowy, tak że nawet szyldu informacyjnego nie muszę wieszać.

Genialne. I w ten sposób wykonałem zadanie, nie robiąc nic. I mogę zająć się ważniejszymi problamami. :-)

Pozostało 580 znaków

2020-02-09 20:28

Rejestracja: 2 tygodnie temu

Ostatnio: 3 dni temu

0

Piszesz że nie chcesz spędzac eonów uczc się nowej biblioteki.. a z doświadczenia wiem że spędziesz 100 raz więcej czasu próbujc coś stworzyć samemu zamiast skorzystać z gotowego rozwiązania.

Wiadomo. Ale jestem pasjonatem. Nie bloguję na Wordpress tylko na swojej stronie i swoich rozwiązaniach stworzonych przeze mnie od absolutnych podstaw. - Jakub Prażmowski 2020-02-09 20:31

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0