我继承了一个可怕的网站,所以请原谅这个问题:)我们需要将任何非标准字符转换为HTML实体,而不是将网站升级为完全UTF8:
&#ord_value;
这个测试脚本为一个charachter执行此操作:
$foo =~ s/(\x{ed})/to_ord($1)/e;
sub to_ord {
return ("&#" . ord($_[0]). ";")
}
我需要做的是,在比ord 127更大的任何事情上触发这个。有一种简单的方法可以做到这一点吗?我已经研究过角色类但看不到任何适合该法案的内容
FWIW ,我让他们意识到他们当前存储数据的方式非常糟糕,并且会导致尝试搜索HTML实体的人出现问题 - 但这是我无法控制的。
更新:这有效,但我确信必须有更好的方法 - 所以如果您有任何建议,请分享:)
s/([^a-z \.,-_0-9])/to_ord($1)/eg
答案 0 :(得分:2)
function sumItems(array) {
let sum = 0;
array.forEach((item) => {
if(Array.isArray(item)) {
sum += sumItems(item);
} else {
sum += item;
}
})
return sum;
}
模式的选择:
import socket
import sys
# connect to server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", 3000))
# request file
s.send("request")
f = open("test.png", "wb")
l = s.recv(1024)
while(l):
f.write(l)
l = s.recv(1024)
f.close()
print("Done receiving")
s.shutdown(socket.SHUT_WR)
s.close()
# do something with the file
# ...
# send new file back
s.connect(("localhost",3000)) # This will reconnect to the server and you should see the echo
s.send("validate")
s.send("Hello, World") # dummy input just to see if it's working
s.close() # 's' has already been closed, but I don't know how I should make another request after 's.shutdown(...)'
(逃避非ASCII。)s/(...)/ ... /eg;
(转义非ASCII和控制字符。)替换表达式的选择:
[^\x00-\x21\x23-\x25\x28-\x3B\x3D\x3F-\x7F]
[^\x09\x0A\x0D\x20-\x21\x23-\x25\x28-\x3B\x3D\x3F-\x7E]
(额外的CPU,但带宽减少。)例如,
"&#".ord($1).";"