Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Modyfikator links
Forum PHP.pl > Forum > PHP
Bastion
Witam,

Pisze sobie modyfikator do aktywowania linkow w tekscie, mam problem takiego typu :

w przypadku posiadania tablicy class zawierajacej klasy dla typu odnosnika np :

$class['http'] = 'a_http';
$class['https'] = 'a_https';

a majac w tekscie HtTp://www.some.link.pl

jako protokol zostanie odczytany HtTp , ktory bedzie kluczem do tablicy styli.
w jaki sposob zmusic aby przekonwertowal klucz za pomoca strtolower.
probowalem juz wzystkiego.

  1. <?php
  2.  
  3. function chameleon_modifier_links(&$chameleon, &$input, $class = '', $overwrite = false)
  4. {
  5. $ereg = '/(http|https|ftp|news):(\/\/[[:alnum:]@#%\&_=?\/\.-]+)/ei';
  6.  
  7. if (!empty($class))
  8. {
  9. if (is_array($class))
  10. {
  11. // $_class = " class=\\\"\$class[strtolower(\"$1\")]\\\"";  nie chce dzialac
  12. $_class = " class=\\\"\$class[$1]\\\"";
  13. } else
  14. {
  15. $_class = " class=\\\"".$class."\\\"";
  16. }
  17. } else
  18. {
  19. $_class = '';
  20. }
  21.  
  22. $link = "\"<a".$_class." href=\\\"$1:$2\\\">$1:$2</a>\"";
  23.  
  24. if ($overwrite)
  25. {
  26. $input = preg_replace($ereg, $link, $input);
  27. return $input;
  28. } else
  29. {
  30. $output = preg_replace($ereg, $link, $input);
  31. return $output;
  32. }
  33. }
  34.  
  35. $test = "http://www.vertis.com.pl <br />\n hTTp://www.vertis.com.pl";
  36.  
  37. $style = array('http' => 'styl1');
  38.  
  39. print chameleon_modifier_links($foo, $test, $style);
  40.  
  41. ?>
siemakuba
skoro wiesz dokladnie jakie protokoly chcesz uwzgledniac, nie wystarczy prosty replace na $input?

  1. <?php
  2.  
  3. $replace = array('http://', 'https://', 'news://', 'ftp://');
  4. $input = str_ireplace($replace, $replace, $input);
  5.  
  6. ?>


nie ma u siebie PHP5 (na nim pracuje chameleon, rajt?) wiec nie moge przetestowac jak zachowa sie str_ireplace, ale wydaje mi sie ze znajdzie nie zwazajac na rozmiar liter wszystkie wartosci z tablicy i nastepnie zamieni je na odpowiednie wartosci z tablicy, w tym przypadku na pewno malymi literami pisane.

Nie wiem tez jak to sie ma do wydajnosci, bo mozesz miec ten $input spory podejrzewam.

pozdr.
Bastion
Tak, zgadza sie, to do chamelona.

Ciekawe rozwiazanie smile.gif Zaaplikuje to do wtyczki , bo chyba nic nie wymysle z tym strtolower(\'$1'\);
Hacker
albo napisać Kolekcje do $styl i tam strtolower
Hacker
Może odgrzewam statry topic ale
Cytat
Przykład 5. Using the 'e' modifier
<?php
preg_replace("/(<\/?)(\w+)([^>]*>)/e",
"'\\1'.strtoupper('\\2').'\\3'",
$html_body);
?>

This would capitalize all HTML tags in the input text.
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.