Как мы можем использовать PHP для определения URL-адреса в строке и хранить их в массиве?
Это пример строки.
$text = "The text you want to filter goes here. http://google.com, https://www.youtube.com/watch?v=K_m7NEDMrV0,https://instagram.com/hellow/";
Я не могу использовать функцию explode
потому что, если URL-адрес содержит запятую, он не даст правильных результатов.
print_r (explode(" ",$text));
REGEX – это ответ на вашу проблему. Принимая ответ на объект Manipulator .. все, что ему не хватает, это исключить «запятые», чтобы вы могли попробовать этот код, который исключает их, и дает 3 отдельных URL-адреса в качестве вывода:
$string = "The text you want to filter goes here. http://google.com, https://www.youtube.com/watch?v=K_m7NEDMrV0,https://instagram.com/hellow/"; preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $string, $match); echo "<pre>"; print_r($match[0]); echo "</pre>";
и выход
Array ( [0] => http://google.com [1] => https://www.youtube.com/watch?v=K_m7NEDMrV0 [2] => https://instagram.com/hellow/ )
попробуйте использовать ниже regex
$regex = '/https?\:\/\/[^\",]+/i'; preg_match_all($regex, $string, $matches); echo "<pre>"; print_r($matches[0]);
Надеюсь, это сработает для вас
Вы можете попробовать Regex здесь:
$string = "The text you want to filter goes here. http://google.com, https://www.youtube.com/watch?v=K_m7NEDMrV0,https://instagram.com/hellow/"; preg_match_all('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $string, $match); echo "<pre>"; print_r($match[0]); echo "</pre>";
Это дает следующий результат:
Array ( [0] => http://google.com [1] => https://www.youtube.com/watch?v=K_m7NEDMrV0,https://instagram.com/hellow/ )
попробуй это
function getUrls($string) { $regex = '/https?\:\/\/[^\" ]+/i'; preg_match_all($regex, $string, $matches); return ($matches[0]); } $urls = getUrls($string); print_r($urls);
или
$str = '<a href="http://foobar.com"> | Hello world Im a http://google.fr | Did you mean:http://google.fr/index.php?id=1&b=6#2310'; $pattern = '`.*?((http|ftp)://[\w#$&+,\/:;=?@.-]+)[^\w#$&+,\/:;=?@.-]*?`i'; if (preg_match_all($pattern,$str,$matches)) { print_r($matches[1]); }
он будет работать
$string = "The text you want to filter goes here. http://google.com, https://www.youtube.com/watch?v=K_m7NEDMrV0,https://instagram.com/hellow/"; preg_match_all('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $string, $match); echo "<pre>"; $arr = explode(",", $match[0][1]); print_r($match[0][0]); print_r($arr); echo "</pre>";
$urlstring = "The text you want to filter goes here. http://google.com, https://www.youtube.com/watch?v=K_m7NEDMrV0,https://instagram.com/hellow/"; preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $urlstring , $result); print_r($result[0]);