Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]wyłączenie z formatowania znaczników
Forum PHP.pl > Forum > Przedszkole
shreker
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:
  1. 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.
com
http://php.net/htmlspecialchars
shreker
htmlspecialchars - konwertuje znaki specjalne na znaczniki, a mi chodzi o to co napisałem w temacie i opisie
com
przeczytaj jeszcze raz co robi htmlspecialchars smile.gif
nospor
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
com
http://ideone.com/4a4mRT
Ponieważ to tryb CLI to widać &lt; ale przeglądarka zrobi z tego normalne znaki
shreker
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
@shreker napisalem ci jak to zrobic.
com
no to tak jak napisał nospor, pierwszy post był nie do końca jasny smile.gif
Ale to chyba tu bardziej jakimś parserem html/xml pasuje
shreker
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
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
strip_tags ?
com
http://php.net/manual/en/function.strip-tags.php
Nie 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ł biggrin.gif
shreker
wiem nospor, tylko czy nie da się zrobić tak jak napisałem - czyli żeby wyciąć opisane cześci?
nospor
@shreker jesli wytniesz calkowicie to jak to potem przywrocisz? Skad bedziesz wiedzial gdzie masz przywrocic?
shreker
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
facepalmxd.gif
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
sorry, może trochę źle sformułowałem, a coś więcej, jak to zrobić ?
nospor
Przeciez napisalem
Cytat
albo strip_tags
albo wyrazenie regularne i preg_replace

Czego nie rozumiesz?
shreker
chodzi mi o wyrazenie regularne, jak to mniej więcej miałoby wyglądać?
nospor
http://php.net/manual/en/function.strip-tags.php
w 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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.