Skocz do zawartości

Problem z konwerterem


simon186

Rekomendowane odpowiedzi

Witam! Napisałem funkcję, która konwertuje polskie litery na kodowanie utf=8. Chciałem wykorzystać ja w formularzu jednak napotykam na problem, z którym nie mogę się uporać. Oto dwa skrypty. Proszę o pomoc

funkcja kodowania

<?php

function kodowanie($string){

$polskie = array(Ą, ą, Ć, ć, Ę, ę, Ł, ł, Ń, ń, Ó, ó, Ś, ś, Ź, ź, Ż, ż);
$ile = count($polskie);

$utf = array('Ą', 'ą', 'Ć', 'ć', 'Ę', 'ę', 'Ł', 'ł', 'Ń', 'ń', 'Ó', 'ó', 'Ś', 'ś', 'Ź', 'ź', 'Ż', 'ż');
$ile_utf = count($utf);

if($ile === $ile_utf){
for($i = 0; $i<$ile; $i++){

$string = str_replace($polskie[$i], $utf[$i], $string);

}
return $string;
}
else{echo 'W funkcji ustawiona jest zła tablica';}
}

function safeinput($string){
$string = trim($string);
$string = htmlspecialchars($string);
#$string = strip_tags($string);
$string = addslashes($string);
return $string;
}

?>

formularz

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

</head>

<body>

<?php

include('../../../functions.php');

if(isset($_POST['submit'])){
$tekst = $_POST['tekst'];
echo $tekst;
$tekst = kodowanie($tekst);
echo $tekst;
}
?>
<form action="" method="POST">
Tekst konwertowany: <br><textarea name="tekst" rows="10" columns="50"><? echo $_POST['tekst']; ?></textarea><br><br>
<input name="submit" type="submit" value="Konwertuj"><br><br>
Po skonwertowaniu: <br><textarea name="po" rows="10" columns="50"><? echo $tekst; ?></textarea>
</form>
</body>
</html>

Problemem jest to, że mimo iż wypełniam formularz po jego przejściu nic nie chce się pokazać. Gdy nie uzywam formularza funkcja działa poprawnie

Odnośnik do komentarza
Udostępnij na innych stronach

Ale co mam dokładnie przeczytać, bo na tyle co rozumiem z manuala to wszystko mam dobrze. Do tego mam podany jasno przykład:

$string = "This is a test";
echo str_replace(" is", " was", $string);

Nie rozumiem w takim razie dlaczego po przejściu przez formularz funkcja przestaje działać kiedy w normalnych okolicznościach pisząc np.

$string = kodowanie('ąśęśćń󿏯';)

wszystko poprawnie mi się zamienia na utf. Po przejściu przez formularz już nie.

Odnośnik do komentarza
Udostępnij na innych stronach

No już lepiej, chodziło o to, że jeśli chcesz żeby Ci ktoś pomógł to daj mu jak najwięcej danych żeby nie musiał analizować całości źrodła. Przeedytowałeś post i podałeś, że funkcja działa prawidłowo więc można się skupić na formularzu, nieprawdaż?

I co to znaczy, że 'nic się nie chce pokazać'? Jeśli nie wyświetla się oryginalny tekst to z jakiś powodów nie wchodzi w if(isset .

Nie chce mi się uruchamiać Twojego problemu ale w pierwszej kolejności sprawdziłbym czy finctions.php na pewno się inkluduje i czy czasem

name="submit" nie bruździ (submit może się pod Twoją przeglądarką kłócić z type="submit" - zmień name np na name="zatwierdzenie")

W str_replace podając tablice nie musisz używać pętli, oczywiście, że możesz ale śmiem twierdzić, że to niepotrzebne,nieekonomiczne i bez sensu.

Odnośnik do komentarza
Udostępnij na innych stronach

include('../../../functions.php');

if(isset($_POST['submit'])){
$tekst = $_POST['tekst'];
echo $tekst;
$tekst = kodowanie($tekst);
echo $tekst;

funkcje są dobrze zaincludowane bo albo bym mial raporto o błędnej includacji albo o undefined function 'kodowanie'. Problem w tym że mi się $tekst wyświetla na stronie ale nie w postaci utf (sprawdzałem w źródle) a w postaci polskich znaków diaktrycznych. Dodanie htmlspecialchars() tez nie pomoglo. Dla mnie to wygląda tak jakby po przejsciu przez formularz Ą zamieniało się np. na jakąś literę z latin'a i teraz nie wiem jak to rozczytać.

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Witam! Napisałem funkcję, która konwertuje polskie litery na kodowanie utf=8. Chciałem wykorzystać ja w formularzu jednak napotykam na problem, z którym nie mogę się uporać. Oto dwa skrypty. Proszę o pomoc

Po pierwsze wyrażasz sie nieprecyzyjnie, prawidłowo powinieneś napisać:

Napisałem funkcję, która konwertuje polskie litery kodowane w standardie XXX YYYY ZZZZ na kodowanie utf=8

Bo po obejrzeniu kodu to nawet nie zrozumiałem o co Ci chodzi bo zamieniasz Ą na Ą, ę na ę , ó na ó

Kolejna sprawa:

-po co instrukcja iteracji w funkcji kodowanie ? Jako paramerty funkcji str_replace można podawać tablice bedzie szybciej i ładniej :)

I jeszcze zapisywał bym polskie znaki systemem szesnastkowym, ma to tą przewagę nad formatem który zastosowałeś ze działa zawsze,

tak jak to Ty zrobileś to po skopiowaniu do schowka i wklejeniu może już nie działać :) bo plik mogę zapisać w 3 kodowaniach ISO, WIN, UTF8. Dlaczego tak jest to już musisz sam dojść :)

Gdzieś na PiO jest przykład funkcji która zamienia PL-znaki z ogonkami na ich wersje bez ogonków może to Cie zainspiruje (autorem jest niejaki Maximus )

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności