Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Krótkie wyrazy w nowej lini
Forum PHP.pl > Forum > Przedszkole
patryczakowy
Witam w jaki sposób mogę przerzucać wyrazy krótsze niż np 4 znaki do nowej Lini chodzi o to żeby linia tekstu nie kończyła się krótkim wyrazem.

Z góry dzięki za radę.
darko
  1. $txt = 'coś tam coś ta';
  2. $new_txt = '';
  3. foreach(explode(' ', $txt) as $word)
  4. {
  5. count($word) <= 4 ? $new_txt .= "\n<br/>" . $word : $new_txt .= ' ' . $word;
  6. }
  7. echo $new_txt;

?
patryczakowy
niestety to nie zda egzaminu bardziej chodziło mi o js mam diva a w nim tekst ostatni wyraz wyświetlany w danej linii nie może być krótszy niż 4 znaki
darko
Skorzystamy z gotowca:
  1. function explode (delimiter, string, limit) {
  2. // Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned.
  3. //
  4. // version: 1006.1915
  5. // discuss at: http://phpjs.org/functions/explode // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  6. // + improved by: kenneth
  7. // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  8. // + improved by: d3x
  9. // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // * example 1: explode(' ', 'Kevin van Zonneveld');
  10. // * returns 1: {0: 'Kevin', 1: 'van', 2: 'Zonneveld'}
  11. // * example 2: explode('=', 'a=bc=d', 2);
  12. // * returns 2: ['a', 'bc=d']
  13. var emptyArray = { 0: '' };
  14.  
  15. // third argument is not required
  16. if ( arguments.length < 2 ||
  17. typeof arguments[0] == 'undefined' || typeof arguments[1] == 'undefined' ) {
  18. return null;
  19. }
  20.  
  21. if ( delimiter === '' || delimiter === false ||
  22. delimiter === null ) {
  23. return false;
  24. }
  25. if ( typeof delimiter == 'function' ||
  26. typeof delimiter == 'object' ||
  27. typeof string == 'function' ||
  28. typeof string == 'object' ) {
  29. return emptyArray; }
  30.  
  31. if ( delimiter === true ) {
  32. delimiter = '1';
  33. }
  34. if (!limit) {
  35. return string.toString().split(delimiter.toString());
  36. } else {
  37. // support for limit argument var splitted = string.toString().split(delimiter.toString());
  38. var partA = splitted.splice(0, limit - 1);
  39. var partB = splitted.join(delimiter.toString());
  40. partA.push(partB);
  41. return partA;
  42. }
  43. }
  44. <div id="my_div"></div>
  45. var text = 'to jest przykladowt tekst bla bla bla';
  46. var x = explode(' ', text);
  47. var temp = '';
  48. for(var y in x)
  49. {
  50. if(x[y].length <= 4)
  51. temp += '<br/>' + x[y];
  52. else
  53. temp += ' ' + x[y];
  54. }
  55. document.getElementById('my_div').innerHTML = temp;
  56. </body></html>


kod funkcji za: http://phpjs.org/functions/explode:396
patryczakowy
dałeś mi to samo rozwiązanie tylko że teraz w js może lepiej uściśnie o co chodzi jest formularz zainstalowany tinyMce ktoś sobie wprowadza tekst który ma się wyświetlić na stronie i chodzi o to że teraz jak jest akapit w nim powiedzmy 5 linijek tekstu to zdarza się tak że linia kończy się powiedzmy literą "i" a tak nie powinno być w Wordzie funkcja o która mi chodzi nazywa się jeśli dobrze pamiętam "Wszy i wdowy" polega na tym że właśnie takie krótkie wyrazy są przerzucane do nowej Lini.
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.