通过php中的preg_match从字符串中提取url

时间:2014-04-22 11:58:35

标签: php preg-match

$str = 'window.location.href="http://my-site.com";'

我想从$str中提取网址。 preg_match()我不是那么好。但是使用以下代码:

preg_match('/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/', $str, $link);
if (empty($link[0])) {
    echo "Nothing found!";
} else {
    echo $link[0];
}

我能够得到结果http://my-site.com";。我想自定义preg_match()以从结果中排除";。请帮忙!

3 个答案:

答案 0 :(得分:0)

如果你对preg_ *感到不舒服,那么试着保持简单。对于那些简单的事情来说,加载正则表达式引擎似乎有点不必要的开销。

请尝试以下方法: -

$str = 'window.location.href="http://my-site.com";';

$p1 = strpos($str, 'href="') + strlen('href="');
$p2 = strpos($str, '";', $p1);

$url = substr($str,$p1,$p2-$p1);

echo $p1 .PHP_EOL;
echo $p2 .PHP_EOL;
echo $url;

以下是

22
40
http://my-site.com

href="";

之间的所有内容

答案 1 :(得分:0)

试试这个:

preg_match('/^window.location.href="([^"]+)";$/', $str, $link);

答案 2 :(得分:0)

<?php
$str = 'window.location.href="http://my-site.com";';
preg_match('/window\.location\.href="(.*?)";/', $str, $result);
echo $result[1];
//http://my-site.com
>?

http://ideone.com/YTk70i