我正在尝试将图像链接自动嵌入到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之后-直到它到达末尾,否则图像将无法加载。
答案 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)
-任意选择:jpg
,jpeg
,gif
,png
,bmp
(?:\?[^'"\s<]*)?
-?
字符的可选序列,后跟除'
,"
,空格和<
之外的0个或多个字符。 / li>