shreker
12.03.2015, 09:05:27
Witam, podobnie ja w temacie potrzebują wyeliminować z przetwarzania stringu wszystko co jest w znacznikach, łącznie ze znacznikami.
Załóżmy że mamy string np w postaci:
jakis tam string
<code>zawartosc
</code> dalsza czesc stringu
<znacznik>kolejna zawartosc
</znacznik> cos tam dalej ...
Obecnie zarówno znaczniki jak i ich zawartość jest przetwarzana, ja potrzebuję zostawić oryginalną postać. Domyślam się że można to by było zrobić przy pomocy wyrażenia regularnego, jadnak na razie nigdzie nie znalazłem jak.
Dzieki za pomoc.
shreker
12.03.2015, 09:41:37
htmlspecialchars - konwertuje znaki specjalne na znaczniki, a mi chodzi o to co napisałem w temacie i opisie
przeczytaj jeszcze raz co robi htmlspecialchars
nospor
12.03.2015, 09:44:39
1)
Zamien
<znacznik>kolejna zawartosc</znacznik>
na #ZNACZNIK# - proste wyrazenie regularne z preg_replace
2) Rob sobie to przetwarzanie jak chciales
3) Zamien #ZNACZNIK# na <znacznik>kolejna zawartosc</znacznik>
Tu juz zwykle str_replace
http://ideone.com/4a4mRTPonieważ to tryb CLI to widać < ale przeglądarka zrobi z tego normalne znaki
shreker
12.03.2015, 09:47:46
Wiem co robi ta funkcja, chodzi mi tak jak napisałem żeby znaczniki i ich zawartość były pozostawione bez zmian po przepuszczeniu przez inną funkcję zewnętrzną która rozbija cały string na tablicę, przetwarza poszczególne jej elementy, a po przetworzeniu zpowrotem łączy w string. ta funkcja dodatkowo przetwarza mi znaczniki i ich zawartość, a mi chodzi o to żeby te elementy zostały pominięte.
nospor
12.03.2015, 09:51:46
@shreker napisalem ci jak to zrobic.
no to tak jak napisał
nospor, pierwszy post był nie do końca jasny
Ale to chyba tu bardziej jakimś parserem html/xml pasuje
shreker
12.03.2015, 10:01:07
nospor - dzięki, twój pomysł i porada są ok, tylko że ja muszę "pominąć" z formatowania wszystko "od znacznika - do końca znacznika" czyli od rozpoczynającego "<" ... zawartość aż do zamykającego znacznika ">", cała ta zawartość musi być wyeliminowana ze stringu przed "rozbiciem" na tablicę, inaczej później poszczególne elementy zostaną przetworzone :-( Dlatego właśnie myślałem o jakimś wyrażeniu regularnym, tylko nokpletnie nie wiem jak to zrobić
czyli przed rozbiciem na tablicę muszę mieć postać:
z: jakis tam string <code>zawartosc</code> dalsza czesc stringu <znacznik>kolejna zawartosc</znacznik> cos tam dalej ...
na: jakis tam string dalsza czesc stringu cos tam dalej ...
nospor
12.03.2015, 10:05:49
No przeciez ci dokladnie to napisalem. Tylko ze w wyniku nie bedziesz mial
jakis tam string dalsza czesc stringu cos tam dalej ...
a bedziesz mial
jakis tam string dalsza czesc stringu #ZNACZNIK# cos tam dalej ...
No przeciez musisz wiedziec, gdzie potem masz ten znacznik przywrocic, no nie?
Pyton_000
12.03.2015, 10:07:03
strip_tags ?
http://php.net/manual/en/function.strip-tags.phpNie jest to idealne ale może pomoże
nospor tak tylko że on jak rozbija to do przetwarzania to potrzebuje sam tekst bez znaczników. Problemem będzie za to tak jak mówisz ich przywrócenie potem
O
Pyton_000 mnie ubiegł
shreker
12.03.2015, 10:11:58
wiem nospor, tylko czy nie da się zrobić tak jak napisałem - czyli żeby wyciąć opisane cześci?
nospor
12.03.2015, 10:13:38
@shreker jesli wytniesz calkowicie to jak to potem przywrocisz? Skad bedziesz wiedzial gdzie masz przywrocic?
shreker
12.03.2015, 10:18:29
to nie ma być przywracane, przetwarzane mają być tylko elementy które nie są znacznikami
czyli nie: jakis tam string <code>zawartosc</code> dalsza czesc stringu <znacznik>kolejna zawartosc</znacznik> cos tam dalej ...
ale: jakis tam string zawartosc dalsza czesc stringu kolejna zawartosc cos tam dalej ...
nospor
12.03.2015, 10:21:02

To po grzyba ta cala gatka o przetwarzaniu i takie tam... Twoje pytanie powinno brzmiec:
Mam taki a taki tekst. Jak z niego usunac zawartosc znacznika wraz z całym znacznikiem?I tyle. Proste i czytelne pytanie, bez zbednego mieszania...
albo strip_tags
albo wyrazenie regularne i preg_replace
shreker
12.03.2015, 10:22:47
sorry, może trochę źle sformułowałem, a coś więcej, jak to zrobić ?
nospor
12.03.2015, 10:23:48
Przeciez napisalem
Cytat
albo strip_tags
albo wyrazenie regularne i preg_replace
Czego nie rozumiesz?
shreker
12.03.2015, 10:24:56
chodzi mi o wyrazenie regularne, jak to mniej więcej miałoby wyglądać?
nospor
12.03.2015, 10:27:23
http://php.net/manual/en/function.strip-tags.phpw jednym z pierwszych komentow masz funkcje, ktora robi co chcesz.
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.