Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Filtrowanie i zmiana tekstu
Forum PHP.pl > Forum > Przedszkole
Kiran
Witam, chciałbym napisać coś w rodzaju filtra, który wychwytywałby pewną informację i po pewnej komendzie ją zmieniał.

Typu chcę, żeby Ania zmieniła się na Karolina

A to tekst:

"Osobą, której nienawidzę jest Ania, chciałbym to zmienić."

I jeszcze pytanie, dlaczego zmienne nie obsługują tekstu w < > ?

Ponieważ mam coś takiego

  1. <HTML>
  2. <HEAD>
  3. <title>Wojna by Kirasia</title>
  4. <meta charset="UTF-8">
  5. </HEAD>
  6. <BODY>
  7.  
  8. <form action="embedwynik.php" method="post"/>
  9. Tu wklejasz tekst:
  10. <br>
  11. <input type="text"
  12. name="embed" size=50 maxsize=50 />
  13. <input type="submit" value="Zmień" />
  14.  
  15. <?php
  16.  
  17. ?>
  18. </BODY>
  19. </HTML>


Gdy wkleję tam tekst np. <lalalal> to już go nie odczytuje.
Więc, bardzo czekam na waszą pomoc, w sprawie tego filtrowania tekstu.
Kshyhoo
Przenoszę♀ do Przedszkola.
Turson
A gdzie twój kod, ktory rzekomo nie działa?
Kiran
  1. <HTML>
  2. <HEAD>
  3. <title>Embed by Kiran</title>
  4. <meta charset="UTF-8">
  5. </HEAD>
  6. <BODY>
  7.  
  8. <?php
  9.  
  10. $embed = $_POST['embed'];
  11.  
  12. echo $embed;
  13.  
  14.  
  15. ?>
  16. </BODY>
  17. </HTML>



Gdy wpisany na poprzedniej stronie tekst wygląda tak:

<iframe frameborder="0" width="740" height="420" src="//www.dailymotion.com/embed/video/x1vfics" allowfullscreen></iframe>

To przy wyświetlaniu go przez echo, jest biała kartka.

Znalazłem tą funkcję jako zamiana słów w zdaniach przypisanych do zmiennych.


echo str_replace("pierwsze", "drugie", $embed);

Tekst: 740 420

I kiedy cały kod wygląda tak:
  1. <HTML>
  2. <HEAD>
  3. <title>Embed by Kiran</title>
  4. <meta charset="UTF-8">
  5. </HEAD>
  6. <BODY>
  7.  
  8. <?php
  9.  
  10. $embed = $_POST['embed'];
  11.  
  12. echo str_replace("740", "420", $embed);
  13.  
  14. ?>
  15. </BODY>
  16. </HTML>


To pierwsza część się zmieni, a co jeśli chciałbym zmienić dwa "wyrazy" w jednym zdaniu?

Próbowałem tak:

  1. <HTML>
  2. <HEAD>
  3. <title>Embed by Kiran</title>
  4. <meta charset="UTF-8">
  5. </HEAD>
  6. <BODY>
  7.  
  8. <?php
  9.  
  10. $embed = $_POST['embed'];
  11.  
  12. echo str_replace("740", "640", $embed);
  13. echo str_replace("420", "320", $embed);
  14.  
  15. ?>
  16. </BODY>
  17. </HTML>


Zamiast zmiany dwóch wyrazów, wyświetla się tak:

620 420740 320

Tak więc ponawiam pytanie, co zrobić, żeby zmienna przechwytywała ten tekst:

<iframe frameborder="0" width="740" height="420" src="//www.dailymotion.com/embed/video/x1vfics" allowfullscreen></iframe>

I zmieniam pytanie, jak zmienić dwa wyrazy w jednym zdaniu?
Turson
Masz zły adres w iframe i dlatego może go nie wyświetla (dwa //)
Odpowiedź na drugie pytanie to strtr
Kiran
Ale to jest tekst do wyświetlenia, on nie może być błędny o.O

A co do tego strtr to owszem zmienia ze zdania 2 wyrazy, ale po zmianie wypluwa tylko je.
Co jeżeli miałbym zdanie: lalalalal 740 lalalal 420

I chcę, żeby wyświetliło po zmianie
lalalalal 640 lalalal 320

A nie samo:
640 320
Turson
Cytat
Ale to jest tekst do wyświetlenia, on nie może być błędny o.O

Ale jak dasz echo z zawartością kodu iframe to jest on interpretowany przez przeglądarkę. Jak chcesz wypisać zwykły plaintext to htmlspecialchars.

Co do strtr, on nie wypluwa tylko zamienione wyrazy, ale cały ciąg wraz z zamienionymi danymi
Kiran
To w takim razie jak popdpiąć

  1. <?php
  2. $trans = array("hello" => "hi", "hi" => "hello");
  3. echo strtr("hi all, I said hello", $trans);
  4. ?>


Ponieważ po echo strtr jest zdanie, które ma zmienić czyli:
hi all, I said hello

A jak zaaplikować tam jakąś zmienną?
Turson
Podaj przykład ze zmienną bo nie bardzo rozumiem
Kiran
Ogólnie chciałem napisać skrypt, który po wpisaniu kodu, np.:

<iframe frameborder="0" width="740" height="420" src="//www.dailymotion.com/embed/video/x1vfics" allowfullscreen></iframe>

I kliknięciu przycisku, zmieniałby liczby 740 i 420 na 640 i 320.

Więc pierwsza część w HTML wygląda tak:

  1. <title>Wojna by Kirasia</title>
  2. <meta charset="UTF-8">
  3. </HEAD>
  4.  
  5. <form action="embedwynik.php" method="post"/>
  6. Tu wklejasz embedy:
  7. <br>
  8. <input type="text"
  9. name="embed" size=50 maxsize=50 />
  10. <input type="submit" value="Zmień!" />
  11.  
  12. </BODY>
  13. </HTML>


A potem skryptem php wyciągam wpisany tekst:

  1. <HTML>
  2. <HEAD>
  3. <title>Embed by Kiran</title>
  4. <meta charset="UTF-8">
  5. </HEAD>
  6. <BODY>
  7.  
  8. <?php
  9.  
  10. $embed = $_POST['embed'];
  11.  
  12.  
  13. ?>
  14. </BODY>
  15. </HTML>


Chciałbym przerobić ten skrypt PHP, żeby zmieniał te liczby z 740 i 420 na 640 i 320, a potem pokazywał na ekranie przez echo.
Średnio zrozumiałem to co wysłałeś, żeby echo pokazywało wszystkie znaki... a ze strtr też nie mam pojęcia jak to zapisać.
Przepraszam, że to powiem, ale z gotowca najlepiej się uczę, bo metodą usuwania poszczególnych elementów mogę na swój rozum
dowiedzieć się co oznacza każda komenda i lepiej to pojąć. Tak więc, mógłbyś napisać coś takiego?
Turson
  1. echo strtr($embed, array(740=>420,640=>320));
Kiran
  1. <HTML>
  2. <HEAD>
  3. <title>Embed by Kiran</title>
  4. <meta charset="UTF-8">
  5. </HEAD>
  6. <BODY>
  7.  
  8. <?php
  9.  
  10. $embed = $_POST['embed'];
  11.  
  12. echo strtr($embed, array(740=>420,640=>320));
  13.  
  14.  
  15. ?>
  16. </BODY>
  17. </HTML>


Przy zwykłym tekście działa, ale jak ma wyświetlić:

<iframe frameborder="0" width="740" height="420" src="//www.dailymotion.com/embed/video/x1vfics" allowfullscreen></iframe>

To już jest biała strona, pytałem się właśnie co poradzić na ten problem, nie wiem czy przeczytałeś.
Wysłałeś mi to http://pl1.php.net/htmlspecialchars
Ale ja dalej nie ogarniam jak tego wszystkiego użyć...
Turson
W końcu chcesz wyświetlić iframe czy goły tekst?
Kiran
Chcę wyświetlić ten cały napis:

<iframe frameborder="0" width="740" height="420" src="//www.dailymotion.com/embed/video/x1vfics" allowfullscreen></iframe>

Tylko ze zmienionymi liczbami.
Turson
  1. $embed = ($embed, array(740=>420,640=>320));
Kiran
  1. <HTML>
  2. <HEAD>
  3. <title>Embed by Kiran</title>
  4. <meta charset="UTF-8">
  5. </HEAD>
  6. <BODY>
  7.  
  8. <?php
  9.  
  10. $embed = $_POST['embed'];
  11.  
  12. $embed = ($embed, array(740=>640,420=>320));
  13.  
  14.  
  15. ?>
  16. </BODY>
  17. </HTML>


No i dalej nie wyświetla tekstu...
Biała strona.
Turson
wklej przed $embed = $_POST['embed'];
  1. var_dump($_POST);

i jeszcze zajrzyj w źródło strony czy jest puste na pewno
Kiran
Wkleiłem:

  1. <HTML>
  2. <HEAD>
  3. <title>Embed by Kiran</title>
  4. <meta charset="UTF-8">
  5. </HEAD>
  6. <BODY>
  7.  
  8. <?php
  9. var_dump($_POST);
  10.  
  11. $embed = $_POST['embed'];
  12.  
  13. $embed = ($embed, array(740=>640,420=>320));
  14.  
  15. ?>
  16. </BODY>
  17. </HTML>


I dalej pusta
Turson
Czy na pewno wgrałeś ten plik na serwer niepusty...?
No nie mam pomysłu, bo nawet HTML nie czyta http://hcsky.pl/embedwynik.php blink.gif
Kiran
Jest dobrze wgrany, ponieważ po dodaniu tego kodu:


Cały skrypt przestał działać.


A to poprzednia strona:

http://hcsky.pl/embed.php

Jak widać, działa.
Turson
$embed = ($embed, array(740=>640,420=>320));
tu ma być strtr jeszcze, czyli
$embed = strtr($embed, array(740=>640,420=>320));
Kiran
No i wszystko działa, bardzo bardzo dziękuje.
Wykorzystując to, że temat otwarty, to chciałbym się zapytać, czy jest możliwość przerobienia skryptu tak, żeby przetwarzał takie 3 linie kodu, każdy w innym wierszu?
Np. te trzy kody:

http://wklejto.pl/201314

Chciałbym za jednym razem edytować wszystkie.

Udało mi się, kod wygląda tak.

  1. <HTML>
  2. <HEAD>
  3. <title>Embed by Kiran</title>
  4. <meta charset="UTF-8">
  5. </HEAD>
  6. <BODY>
  7. <font size="3">
  8. <pre>
  9. <?php
  10.  
  11.  
  12. $embed = $_POST['embed'];
  13. $embed = str_replace("<iframe", "
  14. <iframe", $embed);
  15. $embed = str_replace("<IFRAME", "
  16. <IFRAME", $embed);
  17. $embed = str_replace("<script", "
  18. <script", $embed);
  19.  
  20. $embed = strtr($embed, array(607=>740,360=>420,640=>740,385=>420,380=>420));
  21.  
  22.  
  23. ?>
  24. </pre>
  25. </font>
  26. </BODY>
  27. </HTML>



Dzięki za pomoc, do zamknięcia.
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.