【问题标题】:Using preg_match_all need regex looking for double forward slash使用 preg_match_all 需要正则表达式寻找双正斜杠
【发布时间】:2019-10-07 02:54:05
【问题描述】:

我正在使用以下代码在 URL 中查找带有 https 的 jpg 图像。

preg_match_all('#\bhttps://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/)).jpg#', $data, $images);

目前这会返回所有 jpg 图像 URL,但字符串中需要 https。

我想使用 //(双斜杠)而不是 https。

类似这样的东西;不过当然没那么简单哈哈

preg_match_all('#\b//[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/)).jpg#', $data, $images);

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 可能想去掉单词边界\b 但你可以将s 设为可选'#\bhttp(s)?://
  • 这里的问题是我正在抓取不使用 http 或 https 作为分隔符的数据,图像代码类似于 并不总是 cdn.example.com 所以需要定位 //
  • 为什么不简单:preg_match_all('#//\S+?\.jpg#', $data, $images);

标签: php regex preg-match preg-match-all


【解决方案1】:

以下是我使用的工作正则表达式'/\/\/\S+?\.jpg/'

preg_match_all('/\/\/\S+?\.jpg/', $data, $images);

感谢 cmets 中的 Toto 给我指出正确方向的提示!

【讨论】:

    猜你喜欢
    • 2014-05-13
    • 1970-01-01
    • 2011-01-12
    • 2012-02-25
    • 2023-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    相关资源
    最近更新 更多