Php 从函数中获取值
我正在完成一个转换字符串并将其作为链接传递的脚本,但除此之外,它还使用API缩短URL。问题是,我无法思考如何只获取URL而不是整个链 职能:Php 从函数中获取值,php,function,Php,Function,我正在完成一个转换字符串并将其作为链接传递的脚本,但除此之外,它还使用API缩短URL。问题是,我无法思考如何只获取URL而不是整个链 职能: function findAndShort($string) { $text = preg_replace("/(https?|ftps?|mailto):\/\/([-\w\p{L}\.]+)+(:\d+)?(\/([\w\p{L}\/_\.#]*(\?\S+)?)?)?/u", '<a href="$0">$0</a>
function findAndShort($string) {
$text = preg_replace("/(https?|ftps?|mailto):\/\/([-\w\p{L}\.]+)+(:\d+)?(\/([\w\p{L}\/_\.#]*(\?\S+)?)?)?/u", '<a href="$0">$0</a>', $string);
return $text;
}
在这种情况下,只需要,我尝试使用$chk[0],但当然,打印行上的第一个字符。函数的问题是,您只能返回函数中
返回值下的单个值,因此在您的情况下,测试完函数后,返回值是原始输入值
如果您希望函数只返回URL组件,我将使用explode
分离字符串,然后从explode
函数中对结果数组的每个部分运行preg\u match
,查找https、ftp或mailto,一旦我知道数组的哪个部分正在使用,我将停止进程,定义var,因为我相信您希望返回链接的代码,所以我会做如下操作
返回“”代码>
请注意,var$url
将通过上述过程创建
我希望这有帮助 只需在正则表达式的开头添加^.*
,并使用$1而不是$0:
$text = preg_replace("/^.*((https?|ftps?|mailto):\/\/([-\w\p{L}\.]+)+(:\d+)?(\/([\w\p{L}\/_\.#,]*(\?\S+)?)?)?)/u", '<a href="$1">$1</a>', $string);
你所说的url是指href=“…”中的内容吗?问题是我想不出如何只获取url而不是整个链,这是什么意思?什么是“链条”?请详细说明并提供一些示例输入和输出,以及您希望得到的结果。你越清楚地描述你的问题,你就会得到更好的答案!我设法使用一个旧的API()提取并转换url。。但是现在的问题是,我不能转换所有的链接(我很确定问题出在regexp中,在粘贴2链接的第99行),例如:http://localhost/index.php/topic,28410.0.html
,仅提取到,
现在所有文本都是链接。我只需要链接本身,即捕获字符串的url并将其转换为variable@wiitohzjeh:再使用一对括号,并使用$1而不是$0。请参阅我的编辑。@wiitohzjeh:只需在字符类中添加一个逗号,
。看我的编辑。完美!!非常感谢@M42:)
$text = preg_replace("/^.*((https?|ftps?|mailto):\/\/([-\w\p{L}\.]+)+(:\d+)?(\/([\w\p{L}\/_\.#,]*(\?\S+)?)?)?)/u", '<a href="$1">$1</a>', $string);
~^.*((https?|ftps?|mailto)://[-\p{L}\p{N}_.]+(:\d+)?(/([\p{L}\p{N}/_.#,]*(\?\S+)?)?)?)~u