给出以下代码:
$regex = '/(http\:\/\/|https\:\/\/)([a-z0-9-\.\/\?\=\+_]*)/i';
$text = preg_split($regex, $note, -1, PREG_SPLIT_DELIM_CAPTURE);
返回一个数组,如:
array (size=4)
0 => string '...' (length=X)
1 => string 'https://' (length=8)
2 => string 'duckduckgo.com/?q=how+much+wood+could+a+wood-chuck+chuck+if+a+wood-chuck+could+chuck+wood' (length=89)
3 => string '...' (length=X)
如果返回的数组的size = 3,只有一个URL,我更喜欢它。这可能吗?
答案 0 :(得分:3)
确保可以完成,只需从正则表达式中删除那些额外匹配的组。请尝试以下代码:
$regex = '#(https?://[a-z0-9.?=+_-]*)#i';
$text = preg_split($regex, $note, -1, PREG_SPLIT_DELIM_CAPTURE);
现在生成的数组将在数组中有3个元素而不是4个。
除了删除额外的分组外,我还简化了你的正则表达式,因为大多数特殊字符不需要在字符类中进行转义。