REGEX-文件扩展后解析变量

时间:2018-08-14 20:38:50

标签: regex

我正在尝试将图像链接自动嵌入到wordpress中,而这正是我现在停留的地方

问题在于,当我发布Facebook图像链接时-它在.jpg之后带有查询-因此当前的插件会一直显示该图像直到这一点-我希望它也覆盖整个查询区域

IMG网址

  

TENS = {30: 'thirty', 40: 'forty', 50: 'fifty', 60: 'sixty', 70: 'seventy', 80: 'eighty', 90: 'ninety'} ZERO_TO_TWENTY = ( 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen', 'twenty' ) def number_to_english(n): if any(not x.isdigit() for x in str(n)): return '' if n <= 20: return ZERO_TO_TWENTY[n] elif n < 100 and n % 10 == 0: return TENS[n] elif n < 100: return number_to_english(n - (n % 10)) + ' ' + number_to_english(n % 10) elif n < 1000 and n % 100 == 0: return number_to_english(n / 100) + ' hundred' elif n < 1000: return number_to_english(n / 100) + ' hundred ' + number_to_english(n % 100) elif n < 1000000: return number_to_english(n / 1000) + ' thousand ' + number_to_english(n % 1000) return ''

影响此网址的REGEX(在wordpress插件中)

https://scontent.xx.fbcdn.net/v/t1.15752-9/39227322_318658432236051_8750467176600698880_n.jpg?_nc_cat=0&_nc_ad=z-m&_nc_cid=0&oh=3c0b91f37a0809c9dace85429151986a&oe=5BC5EC9F

输出-如您所见,它在.jpg之后立即停止

$content  =
preg_replace('#((?!"|\')http(s?)://([^\s]*)\.(jpg|gif|png|bmp|jpeg)(?!"|\'))#',
'<img class="embedded-image-link" src="$1">', $content);

我希望它移到.jpg之后-直到它到达末尾,否则图像将无法加载。

1 个答案:

答案 0 :(得分:1)

您可以使用

'~<a\s+[^>]*>.*?</a>(*SKIP)(*F)|https?://[^'"\s<]*\.(?:jpg|gif|png|bmp|jpeg)(?:\?[^'"\s<]*)?~si'

请参见regex demo

详细信息

  • <a\s+[^>]*>.*?</a>(*SKIP)(*F)-匹配a标签并跳过它(由于(*SKIP)(*F))(您可以在|之后添加其他标签,例如(?:<img[^>]*>|<a\s+[^>]*>.*?</a>)(*SKIP)(*F)
  • |-或
  • https?://-http://https://子字符串
  • [^'"\s<]*-除'",空格和<之外的0+个字符
  • \.-一个点
  • (?:jpe?g|gif|png|bmp)-任意选择:jpgjpeggifpngbmp
  • (?:\?[^'"\s<]*)?-?字符的可选序列,后跟除'",空格和<之外的0个或多个字符。 / li>