PDA

Показать полную графическую версию : [решено] есьт ли скриптик замены entities ?


proxy
12-03-2009, 03:16
Подскажите, а есьт ли скриптик замены entities и подобного, к примеру:
▬на ▬
 на пробел
! на знак !

решение такое навоялось...
Func _Replace_Entities($sString)
Local $aTemp
$aTemp = StringRegExp($sString, '.*&#(\d+);.*', 3)
If IsArray($aTemp) Then
For $n=0 To UBound($aTemp[0] & '=' & ChrW($aTemp[$n]))
$sString = StringReplace($sString, '&#' & $aTemp[$n] & ';', ChrW($aTemp[$n]))
Next
EndIf
$sString = StringReplace($sString, ' ', ' ')
$sString = StringReplace($sString, '"', '"')
$sString = StringReplace($sString, '&lt;', '<')
$sString = StringReplace($sString, '&gt;', '>')
$sString = StringReplace($sString, '&amp;', '&')
Return $sString
EndFunc

но ChrW обрабатывает только от 0 до 255, как быть если Chrw значение 9644?

вот тут и в других таких же:
StringReplace($sString, '&', '&')

вместо 1-го апперсанта необходимо вставить: &amp;
другие:

&nbsp;
&quot;
&lt;
&gt;
&amp;

amel27
13-03-2009, 16:40
скриптик замены entities и подобного»
Ничего не понял, а главное - что такое "entities"?.. "объекты", "сущности", "вещи" или "примитивы"?.. Без этого не понять, что такое "подобное" :)
В каком контексте возник вопрос?

proxy
13-03-2009, 18:11
"entities" это вот это (http://www.w3.org/TR/html4/sgml/entities.html) - тут есть список 24.2.1 The list of characters
- и пошло:
iexcl
cent
pound
curren
yen
brvbar
sect
uml
... и т.д.

все эти замечательный обозначения подразумевают обычный ASCII код:
iexcl = "& # 161;"
cent = "& # 162;"
... и т.д.

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

скриптом выше заменил все возможные обычные вхожения: "& # 161;",
а вот подоное переписывать, для всех 96 штук entities, было лень: $sString = StringReplace($sString, '&', '&')
(вместо 1-го апперсанта необходимо вставить: " & amp; ")

- может уже было решение..?

+ ChrW обрабатывает только от 0 до 255, как быть если юникод 9644 ?

amel27
15-03-2009, 17:13
ChrW обрабатывает только от 0 до 255 »
судя по справке до 65535... :dont-know
MsgBox(0, "", ChrW(9644))

proxy
15-03-2009, 20:38
кстати, да!
забыл закрыть тему, все отлично определятеся и заменяется!
конечно # & amp; - вот такие вот все так же вручную )))




© OSzone.net 2001-2012