Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usuwanie bękartów / wyrażenia regularne
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
dobratu
Chciałbym napisać skrypt do usuwania bękartów w tekście. Zasada takiego skryptu jest prosta: zamienia on ciągi znaków typu "w Warszawie" na "w&nbsp;Warszawie", dzięki czemu taki ciąg jest przenoszony do następnej linijki i spójnik nie "wisi" na końcu. Problem polega na tym, że gdy w tekście są linki to wtedy dzieje się coś takiego: "<a&nbsp;href=" i wtedy link jest nie klikalny.
W tym momencie mam taki kod:
  1. text.replace(/((\s+)|(&nbsp;))([\S]{1,3})[\s]+/g, "$1$4&nbsp;");

To wyrażenie nie bierze pod uwagę linków i w ogóle tagów. Jak powinno wyglądać wyrażenie, które wstawia twarde spacje w odpowiednich miejscach ale nie w tagach html?
HgReed
Skoro ma nie łapać tagów, to może zrób sprawdzanie między ">" i "<" (tego regex'a co masz, plus > i < na końcach).

Jeżeli chcesz sprawdzać atrybuty, to zamiast > i < zrób [\",>] i [\",<].

Moim zdaniem wystarczy.
dobratu
Dodałem wyłączenie tagów i teraz wyrażenie wygląda tak:
/[^\>\s]+(\s+)([\S]{1,3})[\s]+([^\s\<]+)/g

funkcja, która zamienia tak:
  1. var result = text.replace(pattern, "$1$2&nbsp;$3");


Problem teraz jest taki, że w danym tagu zamieniany jest tylko jeden przypadek tzn. kod:
  1. <p><a href="url">link</a>test z Warszawiy do Krakowa</p>

po zastąpieniu wygląda tak:
  1. <p><a href="url">link</a>test z&nbsp;Warszawiy do Krakowa</p>

mimo, że wyrażenie jest z opcją globalnego wyszukiwania.

Co zrobić, żeby wyglądał tak:
  1. <p><a href="url">link</a>test z&nbsp;Warszawiy do&nbsp;Krakowa</p>

?

Jeśli można to proszę napisać takie wyrażenie.
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.