【问题标题】:Regex to change spaces in images into entities正则表达式将图像中的空间更改为实体
【发布时间】:2009-07-02 03:23:47
【问题描述】:

我在将图片网址与空格匹配时遇到了很多困难。

我需要做这个

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>")

以下是关于此的主题: regex matching image url with spaces

现在我决定先把空格变成实体,这样上面的正则表达式就可以工作了。

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

.replace(/http:\/\/(.*)\/([^\<\>?:;]*?) ([^\<\>?:;]*)(\.(jpe?g|png|gif))/ig, "http://$1/$2%20$3$4")

替换一个空格,但其余的仍然是空格。

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

在这一点上,坦率地说,甚至不确定这是否可能。任何帮助表示赞赏,谢谢。

试图逃离保罗:

.escape(/http:\/\/(.*)\/([^\<\>?:;]*?) ([^\<\>?:;]*)(\.(jpe?g|png|gif))/)

我可以做到这一点的另一种方法是在 PHP 中转义服务器端,在 PHP 中我可以直接弄乱文件名,而不必在正则表达式中匹配它。

但据我所知,htmlentities 之类的东西不适用于空间。在这个方向上的任何提示也会很好。

【问题讨论】:

  • 你必须在你调用正则表达式的任何字符串上调用 escape...
  • 什么字符串?我需要匹配一个(y)图像网址。
  • 你需要匹配什么?

标签: php javascript jquery regex


【解决方案1】:

试试escape函数:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 这对我有用,谢谢。虽然我用 %20 替换了它。
    【解决方案3】:

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

    去吧:

    urlWithoutSpaces = escape(urlWithSpaces);
    

    【讨论】:

    • 问题是,当我开始对客户端做一些事情时,该 url 将成为用户提交的帖子的一部分,所以我必须先匹配它。
    【解决方案4】:

    urlencode() 怎么样 - 可以做你想做的事。

    【讨论】:

    • 哦,而且 rawurlencode() 可能更适合空格编码。
    • 非常感谢,虽然编码太多了。当 '/' 变为 %2F 时,url 拒绝工作。
    【解决方案5】:

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

    encodeURI = encodeURI || escape;
    
    alert(encodeURI('image name.png'));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-30
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多