PHP中的ReGex,隔离[img]

时间:2017-04-30 05:03:44

标签: php regex

我想隔离其中的内容:

[img]https://URL.com[/img]

[img width=100]https://URL.com[/img]

[img *whatever*]https://URL.com[/img]

所以我得到https://URL.com

我试过了:

preg_match('/\[img[^>+](.+?)\[\/img\]', $data['body'], $titlematches);

preg_match('/\[img](.+?)\[\/img\]/i', $data['body'], $titlematches); 

但它没有得到理想的输出。

2 个答案:

答案 0 :(得分:0)

我对PHP一无所知,但正则表达式应为:

\[img.*?\](.+?)\[\/img\]

Demo

答案 1 :(得分:0)

希望这会帮助你。

正则表达式: \[img[^\]]*\]\K(?:https?:\/\/)?(?:www\.)?[a-zA-Z0-9]+\.[a-z]+

  

1。 \[img[^\]]*\]\K这将与[img匹配,直到]然后\K重置匹配

     

2。 (?:https?:\/\/)?(?:www\.)?[a-zA-Z0-9]+\.[a-z]+这符合您的url

Regex demo

PHP代码:

<?php

ini_set('display_errors', 1);
$string='
[img]https://URL.com[/img]
[img width=100]https://URL.com[/img]
[img *whatever*]https://URL.com[/img]';
preg_match_all('/\[img[^\]]*\]\K(?:https?:\/\/)?(?:www\.)?[a-zA-Z0-9]+\.[a-z]+/', $string,$matches);
print_r($matches);

Try this code snippet here