在字符串中查找URL

时间:2016-02-16 02:57:02

标签: php string str-replace

我有一个包含URL的字符串,我希望能够选择整个字符串。我的意思是分成一个数组,并用不同的URL替换。 我正在努力探索如何获得完整的URL,这可能是为了搜索http的strpos,然后是下一个空白区域的下一个空格,但我似乎无法得到我的头围绕如何实现这一点。

$test = 'testing the test http://www.effef.com this is the end';
echo $pos = strpos($test,'http');

在此字符串中,我们希望获得字符串“http://www.effef.com

如何创建字符串变量,该字符串是字符串中的URL?

3 个答案:

答案 0 :(得分:1)

您不需要在数组中拆分它并循环遍历它以替换它。您可以使用preg_replace来达到目的。

$string = 'testing the test http://www.effef.com this is the end http://www.effef.com';

$replacement = 'http://www.newurl.com';
$regex = '/http:\/\/([^\s]+)/';

// if you are always sure that the url you want to replace is same then
// $regex = '/http\:\/\/www\.effef\.com/';

$new_string = preg_replace($regex, $replacement, $string);

var_dump($new_string);

以下是工作 php-fiddle

但是,如果您因任何原因想要在数组中获取它,可以使用preg_match_all

preg_match_all($regex, $string, $matches);
var_dump($matches);

答案 1 :(得分:0)

试试这个:

$test = 'testing the test http://www.effef.com this is the end http://www.facebook.com';
$arr = explode(" ", $test);
 foreach ($arr as $key => $value) {
     if (strpos($value, 'http') !== false) { echo $value."<br />"; }
 }

答案 2 :(得分:0)

你可以尝试

$string = "testing the test https://www.effef.com this is the end";

if (preg_match('/https?:\/\/[^\s"<>]+/', $string, $find_url)) {

$url = $find_url[0];

echo $url;

}

对我来说,它回复了网址http://www.effef.com/