【问题标题】:How to select only the first link from PHP string?如何从 PHP 字符串中只选择第一个链接?
【发布时间】:2020-06-16 02:45:44
【问题描述】:

我尝试了以下代码以仅从字符串中获取第一个 url。但它不起作用。 print_r($matches[0]); 显示数组结果。但是echo $matches[0]; 什么也没显示,这里出了什么问题? 我只想显示“https://www.amazon.in/b?node=21021782031&pf_rd_r=Z8266H8XJMQGEZMB0X44&pf_rd_p=00f7186e-02c5-40c7-9f15-9f2d65d70297”并删除所有其他文本和链接。

<?php
$string = "Samsung Galaxy S20 (Black) https://www.amazon.in/b?node=21021782031&pf_rd_r=Z8266H8XJMQGEZMB0X44&pf_rd_p=00f7186e-02c5-40c7-9f15-9f2d65d70297 afdsfdsf d https://stackoverflow.com/questions/35433139/php-get-only-values-from-an-array and  https://mail.google.com/mail/u/0/#inbox";
$regex = '#https?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#';
preg_match_all($regex, $string, $matches);
echo "<pre>";
print_r($matches[0]);

echo "</br>";

echo $matches[0];
?>

结果应该只输出来自$string 的第一个链接,如下所示

https://www.amazon.in/b?node=21021782031&pf_rd_r=Z8266H8XJMQGEZMB0X44&pf_rd_p=00f7186e-02c5-40c7-9f15-9f2d65d70297

【问题讨论】:

  • 为什么要 echo 显示结果?还将您的 '' 更改为 ''
  • by echo 我只是在测试代码,目的是添加另一个更大的代码。
  • print_r 是否显示您想要的内容?
  • 但它显示了所有的 URL,我只想获取第一个 URL。
  • 你能写一个正确有效输出的例子吗?

标签: php arrays


【解决方案1】:

你可以用explode做到这一点

$string = "Samsung Galaxy S20 (Black) https://www.amazon.in/b?node=21021782031&pf_rd_r=Z8266H8XJMQGEZMB0X44&pf_rd_p=00f7186e-02c5-40c7-9f15-9f2d65d70297 afdsfdsf d https://stackoverflow.com/questions/35433139/php-get-only-values-from-an-array and  https://mail.google.com/mail/u/0/#inbox";

foreach(explode(" ",$string) as $first_occurrence) {
  if (strpos($first_occurrence, 'http') !== false) { break;}
}

echo $first_occurrence;
//https://www.amazon.in/b?node=21021782031&pf_rd_r=Z8266H8XJMQGEZMB0X44&pf_rd_p=00f7186e-02c5-40c7-9f15-9f2d65d70297 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 2012-02-03
    • 2021-05-26
    • 1970-01-01
    相关资源
    最近更新 更多