Php 将图像中的空间更改为实体的正则表达式

Php 将图像中的空间更改为实体的正则表达式,php,javascript,jquery,regex,Php,Javascript,Jquery,Regex,我很难将图像url与空格匹配 我需要做这个 http://site.com/site.com/files/images/img 2 (5).jpg 进入这样一个div: .replace(/(http:\/\/([^\s]+\.(jpg|png|gif)))/ig, "<div style=\"background: url($1)\"></div>") .replace(/http:\/\/(.*)\/([^\<\>?:;]*?) ([^\<\&g

我很难将图像url与空格匹配

我需要做这个

http://site.com/site.com/files/images/img 2 (5).jpg
进入这样一个div:

.replace(/(http:\/\/([^\s]+\.(jpg|png|gif)))/ig, "<div style=\"background: url($1)\"></div>")
.replace(/http:\/\/(.*)\/([^\<\>?:;]*?) ([^\<\>?:;]*)(\.(jpe?g|png|gif))/ig, "http://$1/$2%20$3$4")
.replace(/(http:\/\/([^\s]+\(jpg | png | gif)))/ig,”)
以下是关于这一点的线索:

现在我决定首先将空间转换成实体,这样上面的正则表达式就可以工作了

但我真的很难做到这一点。 大概是这样的:

.replace(/(http:\/\/([^\s]+\.(jpg|png|gif)))/ig, "<div style=\"background: url($1)\"></div>")
.replace(/http:\/\/(.*)\/([^\<\>?:;]*?) ([^\<\>?:;]*)(\.(jpe?g|png|gif))/ig, "http://$1/$2%20$3$4")
.replace(/http:\/\/(.*)\/([^\?:;]*?)([^\?:;]*)(\.(jpe?g?png?gif))/ig,“http://$1/$2%20$3$4”)
替换一个空间,但所有其余空间仍然是空间

我需要编写一个正则表达式,将http://和图像扩展名(png | jpg | gif)之间的所有空格设置为%20

在这一点上,坦白说,我甚至不确定这是否可能。谢谢你的帮助

试图逃离保罗:

.escape(/http:\/\/(.*)\/([^\<\>?:;]*?) ([^\<\>?:;]*)(\.(jpe?g|png|gif))/)
.escape(/http:\/\/(.*)\/([^\?:;]*?)([^\?:;]*)(\.(jpe?g | png | gif))/)
另一种方法是在PHP中转义服务器端,在PHP中,我可以直接处理文件名,而不必在正则表达式中匹配它

但据我所知,类似htmlentities的东西不适用于空间。这方面的任何提示都很好。

尝试以下功能:

>>> escape("test you");
test%20you
尝试以下功能:

>>> escape("test you");
test%20you

假设您有一个字符串变量
urlWithSpaces
,它被设置为包含空格的URL

简单地说:

urlWithoutSpaces = escape(urlWithSpaces);

假设您有一个字符串变量
urlWithSpaces
,它被设置为包含空格的URL

简单地说:

urlWithoutSpaces = escape(urlWithSpaces);

如果您想控制替换字符,但不想使用正则表达式,请使用一个简单的

$destName = str_replace(' ', '-', $sourceName);

…可能是更有效的解决方案。

如果您想控制替换字符,但不想使用正则表达式,请使用一个简单的

$destName = str_replace(' ', '-', $sourceName);

…可能是更有效的解决方案。

关于urlencode()-它可以做你想做的事。

关于urlencode()-它可以做你想做的事。

在JS端,你应该使用escape(),而escape()只是作为一种备用方法。使用encodeURI()的原因是它使用UTF-8进行编码,而escape()使用ISO拉丁语。同样的问题也适用于解码

encodeURI = encodeURI || escape;

alert(encodeURI('image name.png'));

在JS端,您应该使用,而escape()仅作为备用。使用encodeURI()的原因是它使用UTF-8进行编码,而escape()使用ISO拉丁语。同样的问题也适用于解码

encodeURI = encodeURI || escape;

alert(encodeURI('image name.png'));

你必须在你调用正则表达式的任何字符串上调用escape…什么字符串?我需要匹配一个(y)图像url。你需要将它与什么匹配?你必须在任何字符串上调用escape,你调用regex的是什么字符串?我需要匹配一个(y)图像url。您需要将它与什么匹配?哦,rawurlencode()可能更适合于空间编码。非常感谢,尽管这编码太多了。当“/”变为%2F时,url拒绝工作。哦,rawurlencode()可能更适合使用空格编码。非常感谢,尽管这编码太多了。当“/”变为%2F时,url拒绝工作。问题是,当我开始使用客户端时,url将成为用户提交的帖子的一部分,因此我必须首先匹配它。问题是,当我使用客户端时,url将成为用户提交的帖子的一部分,所以我必须先匹配它。这对我来说很有效,谢谢。虽然我用%20替换了它。这对我很有用,谢谢。虽然我用%20替换了它。