Edycją własnego komentarza Usera ze znacznikami HTML

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, z powrotem na zwykły tekst, który po edycji przez usera, mógłby zostać z powrotem 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

0

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

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, z powrotem do stringu.

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

1

Musisz sobie to napisać

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.

2

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

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.

0
Patryk27 napisał(a):

Dlaczego renderujesz komentarze w trakcie zapisu do bazy?

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

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. :-)

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.

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