Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] Zamiana znaków
Forum PHP.pl > Forum > Przedszkole
Lucash
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 ?
Lk_hc
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.
dyniaq
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. ?>
k_@_m_i_l
  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
Lucash
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 ?
Zmorcia
Kod
{MakUrl($aResSQL['Title'])}


Nie działa to ?
Lucash
od 3 godzin próbuje to zrobic i nic z tego. czy to działa jesli $aResSQL['Title'] to tablica ?
dyniaq
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]}
Lucash
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
dyniaq
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?
Lucash
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 ?
dyniaq
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.
Lucash
a gdzie ustawiać kodowanie ?
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.