Jak zamienić w tekscie treść na inną tylko pomiędzy znacznikami


[PHP] Jak zamienić w tekscie treść na inną tylko pomiędzy znacznikami np. [t] i [/t]?

0x01 graphic

Chcesz podmienić znaki/wyrazy tylko w pewnym, oznaczonym miejscu w tekscie.

0x01 graphic

Przetwarzając tekst można oznaczać pewne jego fragmenty, które mają ulegać zmianie, tak aby reszta nie została naruszona. Weźmy przykładowy ciąg znaków, w którym tylko nawiasy trójkątne zawarte pomiędzy naszymi znacznikami [t] i [\t] mają zostać zamienione na odpowiadające im encje: < i >:

<p> tekst [t] z trójkątnymi <p> nawiasami [/t] do podmiany <p>

Po zamianie tekst ma wyglądać tak:

<p> tekst [t] z trójkątnymi &lt;p&gt; nawiasami [/t] do podmiany <p>

W ten sposób zmieniamy tekst tylko w określonym regionie. W naszym wypadku dwa skrajne znaczniki P mają być paragrafami HTML, a znacznik P wewnątrz ma charakter informacyjny, więc powinien zostać pokazany na ekranie.

Realizacja podmiany wewnątrz określonego ciągu możliwa jest dzięki użyciu wyrażeń regularnych i ekstrakcji łańcuchów. Zobacz jak podobną operację można przeprowadzić w praktyce.

<?

$test = "<p> tekst [t] z trójkątnymi <p> nawiasami [/t] do podmiany <p>";

$czesc2 = preg_replace("/(.*?)(\[t\].*?\[\/t\])(.*)/i","\\2",$test);

$czesc2 = ereg_replace("<","&lt;",$czesc2);

$czesc2 = ereg_replace(">","&gt;",$czesc2);

$calosc = preg_replace("/(.*?)(\[t\].*?\[\/t\])(.*)/i","\\1$czesc2\\3",$test);

echo $calosc;

?>

W pierwszym wyrażeniu regularnym rozbiłem ciąg znaków na trzy części umieszczone w nawiasach. Pierwsza (.*?) oznacza wszystko aż do wystąpienia drugiej (\[t\].*?\[\/t\]) czyli oznaczonego odpowiednio ciągu, a trzecia oznacza resztę (.*).

Funkcja preg_replace() podmienia znaleziony ciąg znaków na drugą część, do której odwołuję się poprzez symbol \\2. Czyli z całego wyrażnia pozostaje tylko to co było w drugim nawiasie i przypisywane jest to do zmiennej $czesc2.

Teraz w wyrażeniu $czesc2 zmieniam to co chciałem podmienić, a więc trójkątne nawiasy na odpowiadające im encje. Następnie podmieniam oryginalny ciąg znaków $test na nowy, używając odwołania do pierwszej pary nawiasów, podmienionego ciągu i trzeciej pary nawiasów, co w sumie daje stary ciąg z nową, środkową wartością.

Całość przypisuję do nowej zmiennej $calosc, która przechowuje już całe wyrażenie z podmienioną zawartością, oznaczoną przez nas znacznikami [t] i [\t].



Wyszukiwarka

Podobne podstrony:
Jak zrobić stronę dostępną na hasło tylko dla wybranych użytkowników, PHP Skrypty
jak zrobic strona dostepna na haslo tylko dla wybranych zytkownikow z wykorzystaniem cookies
Jak zamienić numer IP na domenę lub domenę na numer IP, PHP Skrypty
Jak zrobić stronę dostępną na hasło tylko dla wybranych użytkowników, PHP Skrypty
Jak zamienić prądnicę na alternator w URSUSIE C 330
10(5), Na ambonie i ka˙demu z osobna to m˙wi˙, ale wy jak te psy tylko nastajecie jeden na drugiego,
Jak zamienić liczby na kwoty zapisane słownie, PHP Skrypty
Jak zamienić tekst na grafikę, PHP Skrypty
Jak zamienić prądnicę na alternator w URSUSIE C 330
Glodne emocje Jak schudnac madrze skutecznie i na zawsze glodne
Jak wstawić film z YouTube na opis chomika
Jak chronić adres e-mail na stronie przed spamem stosując przekierowanie, PHP Skrypty
Jak ograniczyć wpływ budownictwa na środowisko
Jak nadmiar fluoru wpływa na orgaznim
Jak księgować wynagrodzenia wypłacane na podstawie umowy o dzieło
Informatyka, tabela 15 ------18, Jak już wcześniej wspomniałam, na realizację zagadnień z wychowania
Jak nie zmarnować pieniędzy na początku istnienia firmy

więcej podobnych podstron