Skocz do zawartości

Jak bezpiecznie zawijać tekst


j_t_r

Rekomendowane odpowiedzi

Witam,

W jaki sposób można bezpiecznie wymuszać zawijanie tekstu w php? Korzystam z funkcji wordwrap:

$text = wordwrap($text, 75, "<br>", true);

Jednak w tekście czasem pojawia się również kod html wstawiający link lub obrazek i zdarza się, że funkcja ta zrobi cięcię gdzieś w środku takiego kodu np.:

<img src="obrazek.jpg" heig<br>ht='40'>

lub

<a href="https://costam.pl"<br>>link</a>

i wtedy jest klops.

Jak sobie z tym poradzić?

pozdrawiam,

Odnośnik do komentarza
Udostępnij na innych stronach

https://pl.php.net/wordwrap

przykład:

function even_better_wordwrap($str,$cols,$cut) {
  $tag_open = '<';
  $tag_close = '>';
  $count = 0;
  $in_tag = 0;
  $str_len = strlen($str);
  $segment_width = 0;

  for ($i=0; $i<=$str_len; $i++){
   if ($str[$i] == $tag_open) {
	   $in_tag++;
	   } elseif ($str[$i] == $tag_close) {
		   if ($in_tag > 0) {
			   $in_tag--;
		   }
	   } else {
		   if ($in_tag == 0) {
			   $segment_width++;
			   if (($segment_width > $cols) && ($str[$i] != "\n")) {
				   $str = substr($str,0,$i).$cut.substr($str,$i+1,$str_len-1);
				   $i += strlen($cut);
				   $str_len = strlen($str);
				   $segment_width = 0;
			   }
		   }
	   }
  }
  return $str;
}


$body = 'this is a text with aaaaaaaaaa <a href="https://www.wp.pl">Jaskis lin</a> aaaaaaaaaaaaaa <img src="https://www.forum.optymalizacja.com/style_images/pio/logo.gif" aaaaaaaaaaaaaaaa. loooooooooooooooooooooo ooooooong word! <a href="https://ww.this.site.com/with/a/loooooooooooooooooooooong/url"> .jakis link. </a>';


echo even_better_wordwrap($body,50,'<br>');

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

:)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 tygodnie później...
Buuu, niestety ten skrypt coś nie hula z polskimi znakami, bo je wycina! :)

Nie bedzie działać z tekstem kodowanym w utf-8

Mozna przed tym skryptem konwertować tekst z utf-8 na iso-8859-2 a potem znowu spowrotem na utf-8

O ile strata innych (nie polskich) niestandardowych znaków nie będzie problemem.

.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności