Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Usuwanie bękartów / wyrażenia regularne, Jakie wyrażenie regularne do usuwania spójników na końcu linijki?
dobratu
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.08.2010

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
HgReed
post
Post #2





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 13.11.2011

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


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.
Go to the top of the page
+Quote Post
dobratu
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.08.2010

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


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 12:52