Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Modyfikator links, Jak strtolower
Bastion
post 28.04.2006, 11:56:00
Post #1





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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. ?>


Ten post edytował Bastion 28.04.2006, 12:36:06


--------------------
Go to the top of the page
+Quote Post
siemakuba
post 28.04.2006, 21:14:34
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


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.
Go to the top of the page
+Quote Post
Bastion
post 28.04.2006, 23:26:07
Post #3





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


Tak, zgadza sie, to do chamelona.

Ciekawe rozwiazanie smile.gif Zaaplikuje to do wtyczki , bo chyba nic nie wymysle z tym strtolower(\'$1'\);


--------------------
Go to the top of the page
+Quote Post
Hacker
post 29.04.2006, 08:28:40
Post #4





Grupa: Zarejestrowani
Postów: 225
Pomógł: 0
Dołączył: 1.11.2005

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


albo napisać Kolekcje do $styl i tam strtolower


--------------------
(\.../)This is Bunny
(O.o)Copy Bunny into your signature to help him...
(> <)...on his way to world domination
Go to the top of the page
+Quote Post
Hacker
post 24.05.2006, 13:02:39
Post #5





Grupa: Zarejestrowani
Postów: 225
Pomógł: 0
Dołączył: 1.11.2005

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


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.


--------------------
(\.../)This is Bunny
(O.o)Copy Bunny into your signature to help him...
(> <)...on his way to world domination
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 Wersja Lo-Fi Aktualny czas: 8.07.2025 - 21:58