Я пробовал следующий код, чтобы получить только первый 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» и удалил весь остальной текст и ссылки.
print_r($matches[0]);
echo $matches[0];
<?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, как показано ниже
$string
https://www.amazon.in/b?node=21021782031&pf_rd_r=Z8266H8XJMQGEZMB0X44&pf_rd_p=00f7186e-02c5-40c7-9f15-9f2d65d70297
вы можете сделать это таким образом, используя разнесение
$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