Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Odzielenie linków od emotek
Forum PHP.pl > Forum > Przedszkole
armind
Witam mam skrypcik shoutboxsa oraz funkcje emotek i auto linku jak oddzielić link od emotki bo to wygląda straszliwie

podam przykłąd wpisze http:// - to z - :/ robi sie jeszcze emotka
djgarsi
Jeśli zamieniasz exlodem to emotki zamieniaj dopiero po spacji czyli
Kod
{spacja}:D
zamieni na biggrin.gif
armind
Tak wywołuje:

".auto_link_text(emoty($row['msg']))."

Oto funckje ktore mam:

  1. function auto_link_text($text) {
  2. $pattern = '#\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))#';
  3. return preg_replace_callback($pattern, 'auto_link_text_callback', $text);
  4. }
  5.  
  6. function auto_link_text_callback($matches) {
  7. $max_url_length = 50;
  8. $max_depth_if_over_length = 2;
  9. $ellipsis = '&hellip;';
  10.  
  11. $url_full = $matches[0];
  12. $url_short = '';
  13.  
  14. if (strlen($url_full) > $max_url_length) {
  15. $parts = parse_url($url_full);
  16. $url_short = $parts['scheme'] . '://' . preg_replace('/^www\./', '', $parts['host']) . '/';
  17.  
  18. $path_components = explode('/', trim($parts['path'], '/'));
  19. foreach ($path_components as $dir) {
  20. $url_string_components[] = $dir . '/';
  21. }
  22.  
  23. if (!empty($parts['query'])) {
  24. $url_string_components[] = '?' . $parts['query'];
  25. }
  26.  
  27. if (!empty($parts['fragment'])) {
  28. $url_string_components[] = '#' . $parts['fragment'];
  29. }
  30.  
  31. for ($k = 0; $k < count($url_string_components); $k++) {
  32. $curr_component = $url_string_components[$k];
  33. if ($k >= $max_depth_if_over_length || strlen($url_short) + strlen($curr_component) > $max_url_length) {
  34. if ($k == 0 && strlen($url_short) < $max_url_length) {
  35. // Always show a portion of first directory
  36. $url_short .= substr($curr_component, 0, $max_url_length - strlen($url_short));
  37. }
  38. $url_short .= $ellipsis;
  39. break;
  40. }
  41. $url_short .= $curr_component;
  42. }
  43.  
  44. } else {
  45. $url_short = $url_full;
  46. }
  47.  
  48. return "<a rel=\"nofollow\" href=\"$url_full\" target=\"_blank\">$url_short</a>";
  49. }
  50.  
  51. function emoty($content) {
  52. $content = str_replace("<wesoly>", "<img src=\"emoty/usmiech.gif\" style=\"border:0px;\" />",$content);
  53. $content = str_replace(":-)", "<img src=\"emoty/usmiech2.gif\" style=\"border:0px;\" />",$content);
  54. $content = str_replace(":)", "<img src=\"emoty/usmiech2.gif\" style=\"border:0px;\" />",$content);
  55. $content = str_replace(":-))", "<img src=\"emoty/usmiech2.gif\" style=\"border:0px;\" />",$content);
  56. return $content;
  57. }


Musiałem skrócic - dałem mniej linijek emotek biggrin.gif
Raven1122
W str_replace, przed kazda emotka daj spacje. Wtedy nie bedzie ci zamienialo tego w ciągach znaków.

Typu
http:// -> http://

Jakiś tekst biggrin.gif -> Będzie emotka biggrin.gif
armind
Nietety ale nie pomogło pomogło ale jak ktos wpisze minke jako pierwsze to nie wyswietla np wpis wyglada tak:

;/ biggrin.gif - to tej 1 minki nie wyswietla

Czy ktos z łąski swojej moze mi pomóc?? sram sie z tym....jak nie potraficie pomóc to po co robicie te forum??
Michasko
Cytat(armind @ 24.01.2013, 21:19:03 ) *
Czy ktos z łąski swojej moze mi pomóc?? sram sie z tym....jak nie potraficie pomóc to po co robicie te forum??


Mistrzuniu, ludzie mają swoje problemy, poza tym zapewne nikt nie ma ochoty pomagać komuś, kto uważa, że jest to nasz obowiązek. Bo to nie nasz obowiązek, a jedynie dobra wola. Więc doceń co masz...
Tak więc zamiast gotowca, powiem tyle - poczytaj o wyrażeniach regularnych. Albo pomyśl o zdefiniowaniu obu możliwości (ze spacją z przodu i z tyłu).
kristaps
Po tym tutorialu powinieneś wiedzieć wszystko o regexp. Więc albo go przerób i rozwiąż swój problem, albo nabierz trochę pokory.
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.