Php 如何在数组中查找部分文本,并获取其索引值

Php 如何在数组中查找部分文本,并获取其索引值,php,Php,如果存在“http”初始值,我将尝试获取数组的索引值,因为字符串中的文本在其他场景中可能不同。。。 在这种情况下,阵列将是: Array ( [0] => Visit [1] => the [2] => website [3] => https://www.google.it [4] => to [5] => find [6] => other [7] => result ) 我需要找到[3]来建立一个超链接。。。这是我尝试使用的代码: $var

如果存在“http”初始值,我将尝试获取数组的索引值,因为字符串中的文本在其他场景中可能不同。。。 在这种情况下,阵列将是:

Array ( [0] => Visit [1] => the [2] => website [3] => https://www.google.it [4] => to [5] => find [6] => other [7] => result )
我需要找到[3]来建立一个超链接。。。这是我尝试使用的代码:

$var = "Visit the website https://www.google.it to find other result";

if ( stripos($var, 'http') !== false ) {
    $values = explode(" ", $var);
    $key = array_search('http', $values); //<-- this not work, cause search the exact value
}
$var=“访问网站https://www.google.it 寻找其他结果”;
if(stripos($var,'http')!==false){
$values=分解(“,$var”);

$key=array_search('http',$values);//我建议使用PHP
filter
函数,因为它会检查字符串是否是有效的URL:

$var=“访问网站https://www.google.it 寻找其他结果”;
$values=分解(“,$var);//首先分解
$keys_,其中_url=[];
foreach($key=>$value){//检查数组的每个元素是否是有效的URL
$validator=filter\u var($value,filter\u VALIDATE\u URL);
如果($validator){
$keys_,其中_url[]=$key;//您的url索引
}
}
或者使用
array\u filter
更紧凑,它还可以查找多个事件:

$var=“访问网站https://www.google.it 或https://www.google.de 寻找其他结果”;
函数是\u url($value){
返回filter\u var($value,filter\u VALIDATE\u URL);
}
打印(数组过滤器($values,“is_url”);

的PHP文档我建议使用PHP
过滤器
函数,因为它会检查字符串是否是有效的URL:

$var=“访问网站https://www.google.it 寻找其他结果”;
$values=分解(“,$var);//首先分解
$keys_,其中_url=[];
foreach($key=>$value){//检查数组的每个元素是否是有效的URL
$validator=filter\u var($value,filter\u VALIDATE\u URL);
如果($validator){
$keys_,其中_url[]=$key;//您的url索引
}
}
或者使用
array\u filter
更紧凑,它还可以查找多个事件:

$var=“访问网站https://www.google.it 或https://www.google.de 寻找其他结果”;
函数是\u url($value){
返回filter\u var($value,filter\u VALIDATE\u URL);
}
打印(数组过滤器($values,“is_url”);

和的PHP文档。@El|u Vanja确实,我在这里就是为了这个…你有什么解决方案可以帮助我吗?试试链接问题中的一些方法,看看它们是否适合你的需要。也许
\bhttp(?:\S |[:punct:]|$)+
@El_Vanja非常感谢您建议的链接,它解决了我的问题!:)您可能会更幸运。@El_Vanja确实是为了这个…您有什么解决方案可以帮助我吗?尝试链接问题中的一些方法,看看它们是否适合您的需要。也许
\bhttp(?:\S |[:punct:][124;$)+
@El_Vanja非常感谢您建议的链接,它解决了我的问题!:)以及您最后为什么使用“break”?这没有经过深思熟虑,只是假设只需要识别一个URL。增强了示例以支持使用两种解决方案方法过滤多个URL。感谢您的帮助,我将在我的整个网页上对其进行测试…以及您为什么在最后使用“break”?这没有经过深思熟虑,假设只需要识别一个URL。增强了示例,以支持使用两种解决方案方法过滤多个URL。感谢您的帮助,我将在我的整个网页上对其进行测试。。。
<a href="<?= $values[X] ?>">$values[X]</a>