Эта функция вставляет пробел? - PullRequest
0 голосов
/ 06 апреля 2011

У нас есть сайт, на котором есть ряд полезных функций, написанных нашим сторонним программистом, но в последнее время я заметил, что одна из них, похоже, вставляет пробел, когда запускается, но я не могу показатьсячтобы найти, где это могло бы быть, чтобы удалить его.

Функция называется "formatpecialpecialcharacters".Его функция заключается в том, чтобы взять строку и просмотреть ее, чтобы преобразовать специальные символы из строки в объекты HTML, и записывается в виде:

function formatspecialcharacters(stringtoformat)

formatspecialcharacters = ""

if isblank(stringtoformat) then exit function

stringtoformat = CStr(stringtoformat)
stringtoformat = Trim(stringtoformat)
fieldcontents = HTMLDecode(stringtoformat)

if Len(fieldcontents)>0 then
    for character_i = 1 to Len(fieldcontents)
        character_c = asc(mid(fieldcontents, character_i, 1))

        select case character_c
        case 174, 169 
            formatspecialcharacters = formatspecialcharacters & "<sup>" & chr(character_c) & "</sup>"
        case else
            formatspecialcharacters = formatspecialcharacters & chr(character_c)
        end select
    next
end if
end function

Другая функция, выполняющаяся внутри вышеупомянутой (HTMLDecode), записывается в виде:

Function HTMLDecode(sText)
sText = vbcrlf & vbtab & sText
    Dim I
    sText = Replace(sText, "&quot;", Chr(34))
    sText = Replace(sText, "&lt;"  , Chr(60))
    sText = Replace(sText, "&gt;"  , Chr(62))
    sText = Replace(sText, Chr(62)  , Chr(62) & vbcrlf & vbtab)
    sText = Replace(sText, "&amp;" , Chr(38))
    sText = Replace(sText, "&nbsp;", Chr(32))
    sText = Replace(sText, Chr(147), Chr(34)) 'smart quotes to proper quotes
    sText = Replace(sText, Chr(148), Chr(34))
    sText = Replace(sText, Chr(146), Chr(39)) 'smart apostrophe to proper apostrophe
    For I = 1 to 255
        sText = Replace(sText, "&#" & I & ";", Chr(I))
    Next
    HTMLDecode = sText
End Function

Я думаю, что это, вероятно, во второй функции, потому что, когда я использую это так:

<a href="<%=decendentdocumentformat_filename(j)%>"><%=formatspecialcharacters(decendentdocumentformat_label(j))%></a>

Где "decendentdocumentformat_filename(j)" = "/example.html" и "formatspecialcharacters(decendentdocumentformat_label(j))" = "Web Page"

В этомНапример, когда он отображается, у меня есть ссылка, затем пробел, а затем метка (в данном случае "Web Page"), когда это должна быть просто ссылка, а затем метка без пробелов между ними.

Любая помощь будет отличной.
Заранее спасибо.

1 Ответ

4 голосов
/ 06 апреля 2011

Не на 100% уверен, что я буду следовать, но если бы вы пошли;

<p><%=formatspecialcharacters("AAA") %><%=formatspecialcharacters("BBB") %></p>

Вы бы увидели пробел;AAA BBB потому что первое, что делает HTMLDecode, - это добавление к строке ввода возврата каретки / перевода строки и табуляции, которое браузер отображает в виде пробела.

Если вы не хотите, чтобы видимое пространство удалялось sText = vbcrlf & vbtab & sText

(Кроме того, ввод не обрезается после HTMLDecode, поэтому, если он будет пропущен "XXX&nbsp;", у вас будет завершающий пробел)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...