Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][HTML] Zamiana znaków
Lucash
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 30.06.2008

Ostrzeżenie: (0%)
-----


Witam,

Mam funckję która zamienia Polskie znaki w Urlach.

function MakeUrl($url)
{
$url = str_replace(array(' ','Ł','ł'),
array(';','l','l'),
$url);
return $url;
}

i chciałbym zamieniać Title, które są wyświeltanie za pomocą:

<div class="moja">
<a class="moja1" href="artykul-{$aResSQL['Title']}-ID{$aResSQL['ID']}.html">{$aResSQL['Title']}</a>
</div>

Jak to zrobic najprościej ?

Ten post edytował Lucash 25.07.2008, 09:20:14
Go to the top of the page
+Quote Post
Lk_hc
post
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 12.06.2006

Ostrzeżenie: (0%)
-----


Rozumiem że chcesz zamieniać polskie znaki w tym $aResSQL['Title'] ? No to wpuść tą zmienną w tą albo podobną funkcje, niech się przemieli a potem do HTMLa.
Go to the top of the page
+Quote Post
dyniaq
post
Post #3





Grupa: Zarejestrowani
Postów: 34
Pomógł: 4
Dołączył: 31.07.2006
Skąd: Oława

Ostrzeżenie: (0%)
-----


Usuwanie polskich znaków diakrytycznych można osiągnąć poprzez zastosowanie wyrażeń regularnych i funkcji preg_replace($pattern, $replacement, $string).

Ewentualnie tak:
  1. <?php
  2. function strip_pl_chars ($string) {
  3. return strtr ($string, 'ĘÓĄŚŁŻŹŃęóąśłżźćń', 'EOASLZZCNeoaslzzcn');
  4. }
  5.  
  6. $strCleanTitle = strip_pl_chars ($aResSQL['Title']);
  7. echo <<<DIV
  8. <div class="moja">
  9. <a class="moja1" href="artykul-{$strCleanTitle}-ID{$aResSQL['ID']}.html">{$aResSQL['Title']}</a>
  10. </div>
  11. DIV;
  12. ?>


Ten post edytował dyniaq 25.07.2008, 08:52:01


--------------------
~ kim jest Ta, co mi w oczach zasadza takie drzewo? ~
Go to the top of the page
+Quote Post
k_@_m_i_l
post
Post #4





Grupa: Zarejestrowani
Postów: 349
Pomógł: 72
Dołączył: 22.01.2008
Skąd: Wadowice/Oświęcim

Ostrzeżenie: (0%)
-----


  1. <?php
  2. function MakeUrl($url)
  3. {
  4.  $url = str_replace(array(' ','Ł','ł'),
  5.  array(';','l','l'),$url);
  6. $aResSQL['Title']=$url;
  7.  return $aResSQL['Title'];
  8. }
  9. ?>


Chyba o to ci chodzi tongue.gif

Ten post edytował k_@_m_i_l 25.07.2008, 08:51:02


--------------------
"PHP to człowiek. MySQL to również człowiek."
Go to the top of the page
+Quote Post
Lucash
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 30.06.2008

Ostrzeżenie: (0%)
-----


generalnie calosc kodu po kilku modyfikacjach wygląda tak:
to wszystko jest umieszczone pod zmienną $sMainContent
gdzie zatem mam wstawić funckę do zamiany znaków?

  1. <?php
  2. $sMainContent = <<<EOF
  3. <div class="cls_result_row">
  4. <div class="clear_both"></div>
  5. {$sImgEl}
  6. <div class="cls_res_info_nowidth" {$sDataStyleWidth}>
  7. <div class="cls_res_info_p">
  8. <a class="actions" href="impreza-{$aResSQL['Title']}-EID{$aResSQL['ID']}.html">{$aResSQL['Title']}</a>
  9. </div>
  10. {$sTags}
  11. <!-- <div class="cls_res_info_p">
  12. {$sStatusMessageC}: <div class="clr3">{$sStatusMessage}</div>
  13. </div> -->
  14. <div class="cls_res_info_p">
  15. {$sDateC}: <div class="clr3">{$sEventsStart}</div>
  16. </div>
  17. <div class="cls_res_info_p">
  18. {$sPostedByC}: <div class="clr3">{$sPostedByHref}</div>
  19. </div>
  20. <div class="cls_res_info_p">
  21. {$sPlaceC}: <div class="clr3">{$sCountry}{$sCity}{$sPlace}</div>
  22. </div>
  23. <div class="cls_res_info_p">
  24. {$sViewParticipants}
  25. </div>
  26. {$sActions}
  27. </div>
  28. <div class="clear_both"></div>
  29. </div>
  30. EOF;
  31. ?>

<div class=\"cls_result_row\"><div class=\"clear_both\"><div class=\"cls_res_info_nowidth\" {$sdatastylewidth}><div class=\"cls_res_info_p\"><a class=\"actions\" href=\"impreza-{$aressql['title']}-eid{$aressql['id']}.html\"><div class=\"cls_res_info_p\"><div class=\"clr3\"><div class=\"cls_res_info_p\"><div class=\"clr3\"><div class=\"cls_res_info_p\"><div class=\"clr3\"><div class=\"cls_res_info_p\"><div class=\"clear_both\"> </div class=\"clear_both\"></div class=\"cls_res_info_p\"></div class=\"clr3\"></div class=\"cls_res_info_p\"></div class=\"clr3\"></div class=\"cls_res_info_p\"></div class=\"clr3\"></div class=\"cls_res_info_p\"></a class=\"actions\" href=\"impreza-{$aressql['title']}-eid{$aressql['id']}.html\"></div class=\"cls_res_info_p\"></div class=\"cls_res_info_nowidth\" {$sdatastylewidth}></div class=\"clear_both\"></div class=\"cls_result_row\">

jakieś krzaki się wywaliły i nie mogę wydedytować poprzedniego postu.

jakieś pomysły ?

Ten post edytował Lucash 25.07.2008, 09:38:04
Go to the top of the page
+Quote Post
Zmorcia
post
Post #6





Grupa: Zarejestrowani
Postów: 234
Pomógł: 5
Dołączył: 26.01.2008
Skąd: Lutcza

Ostrzeżenie: (20%)
X----


Kod
{MakUrl($aResSQL['Title'])}


Nie działa to ?


--------------------
POMOGŁEM ? Wciśnij "Pomógł" , dzięki !
Go to the top of the page
+Quote Post
Lucash
post
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 30.06.2008

Ostrzeżenie: (0%)
-----


od 3 godzin próbuje to zrobic i nic z tego. czy to działa jesli $aResSQL['Title'] to tablica ?
Go to the top of the page
+Quote Post
dyniaq
post
Post #8





Grupa: Zarejestrowani
Postów: 34
Pomógł: 4
Dołączył: 31.07.2006
Skąd: Oława

Ostrzeżenie: (0%)
-----


No w takim sposobie drukowania ("here document" syntax, używanie "<<<") możesz użyć tylko zmiennych. Więc jeszcze przed echo do zmiennych podstaw sobie $aResSQL['Title'] i te inne elementy tablicy. I tam też właśnie dokonaj usunięcia polskich znaków.

Poprawka.

Można używać w heredoc'u tablic. Trzeba je tylko objąć nawiasem klamrowym, np. {$a[1]}

Ten post edytował dyniaq 28.07.2008, 11:05:10


--------------------
~ kim jest Ta, co mi w oczach zasadza takie drzewo? ~
Go to the top of the page
+Quote Post
Lucash
post
Post #9





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 30.06.2008

Ostrzeżenie: (0%)
-----


Niestety moja wiedza z php nie pozwala mi na dokończenie tego zadania. Dla osoby która napisze dokładnie co mam zrobić stawiam dobre piwo.

tutaj jest plik z funkcją

function.txt
Go to the top of the page
+Quote Post
dyniaq
post
Post #10





Grupa: Zarejestrowani
Postów: 34
Pomógł: 4
Dołączył: 31.07.2006
Skąd: Oława

Ostrzeżenie: (0%)
-----


Na początku zdefiniuj funkcję:
  1. <?php
  2. function stripPlChars($string)
  3. {
  4. return strtr($string, 'ĘÓĄŚŁŻŹŃęóąśłżźćń', 'EOASLZZCNeoaslzzcn');
  5. }
  6. ?>

Następnie znajdź w kodzie:
  1. <?php
  2. $sMainContent = <<<EOF
  3. ?>

i wstaw bezpośrednio przed to:
  1. <?php
  2. $sTitle = StripPlChars($aResSQL['Title']);
  3. ?>


Już w heredoc'u EOF znajdz linijkę:
  1. <?php
  2. <class="actions" href="impreza-{$aResSQL['Title']}-EID{$aResSQL['ID']}.html">{$aResSQL['Title']}</a>
  3. ?>

i zamień na:
  1. <?php
  2. <class="actions" href="impreza-{$sTitle}-EID{$aResSQL['ID']}.html">{$aResSQL['Title']}</a>
  3. ?>

Działa?

Ten post edytował dyniaq 28.07.2008, 11:12:04


--------------------
~ kim jest Ta, co mi w oczach zasadza takie drzewo? ~
Go to the top of the page
+Quote Post
Lucash
post
Post #11





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 30.06.2008

Ostrzeżenie: (0%)
-----


Tak też próbowałem, nie może znaleźć tej funkcji mimo ze jest zdefioniowana na początku:
Fatal error: Call to undefined function: stripplchars() in /home/shoq/ftp/603/inc/classes/BxDolEvents.php on line 641


Zrobiłem tez w ten sposób, że wywaliłem tę funkcję stripplchars() i zmieniłem definicję $sTitle

$sTitle = strtr($aResSQL['Title'], 'ĘÓĄŚŁŻŹŃęóąśłżźćń', 'EOASLZZCNeoaslzzcn');

błędu już nie wywala, ale znaków nie zamienia



poprawka.
znaki zamienia, ale nie działa dla polskich znaków. czyzby problem z kodowaniem ?
Go to the top of the page
+Quote Post
dyniaq
post
Post #12





Grupa: Zarejestrowani
Postów: 34
Pomógł: 4
Dołączył: 31.07.2006
Skąd: Oława

Ostrzeżenie: (0%)
-----


Najprawdopodobniej to jest problem. Popróbuj zapisywać skrypt w różnych kodowaniach i sprawdź, czy będzie działać. No a jak to nie wypali to po prostu zrezygnuj z polskich znaków w tym tytule. Albo zapisuj osobno tytuł i nazwę pliku.


--------------------
~ kim jest Ta, co mi w oczach zasadza takie drzewo? ~
Go to the top of the page
+Quote Post
Lucash
post
Post #13





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 30.06.2008

Ostrzeżenie: (0%)
-----


a gdzie ustawiać kodowanie ?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 12:09