Как выбрать только первую ссылку из строки PHP? - PullRequest
0 голосов
/ 16 июня 2020

Я пробовал следующий код, чтобы получить только первый 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

1 Ответ

0 голосов
/ 16 июня 2020

вы можете сделать это таким образом, используя разнесение

$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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...