问问题
8817 次
5 回答
2
此代码将从给定字符串中提取所有 HTTP url 并将它们放入数组中,以便您可以执行任何您想要从数组链接的操作:
<?php
$string = "Test http://www.google.com test2 http://www.something.com test3 http://abc.com";
preg_match_all('!https?://[\S]+!', $string, $match);
$URLs = array();
foreach ($match as $key => $value)
foreach ($value as $key2 => $TheUrl)
$URLs[] = $TheUrl;
for ($i=0;$i<count($URLs);$i++)
echo $URLs[$i]."\r\n";
?>
现在,您将 $string 变量中给出的字符串中的所有 URL 都放入了 $URLs 数组中。您可以 print_r URLs 数组以查看它的内容或使用 for 循环遍历它(如我的示例所示)。
现在,如果要替换字符串中的所有 URL,可以执行以下操作:
for ($i=0;$i<count($URLs);$i++)
$string = str_replace($URLs[$i], "http://www.mysite.com?newurl=".$URLs[$i], $string);
例如,它将所有 URL 字符串替换为 http://www.mysite.com?newurl=[ACTUAL URL]
于 2013-01-29T00:26:19.440 回答
1
这么累?试试这个;
$s = preg_replace_callback('~<a\s+href="(.*?)"(.*?)>(.*?)</a>~i', function($m){
return sprintf('<a href="http://www.MyWebsite.com/?link=%s"%s>%s</a>', urlencode($m[1]), $m[2], $m[3]);
}, $html);
echo $s;
出去;
<body>
<p> </p>
<p><a href="http://www.MyWebsite.com/?link=http%3A%2F%2Fwww.CNN.com" target="_blank">Link One</a></p>
<p><a href="http://www.MyWebsite.com/?link=http%3A%2F%2Fwww.ABC.com" target="_blank">Link Two</a></p>
<p><a href="http://www.MyWebsite.com/?link=http%3A%2F%2Fwww.foxnews.com%2Fpolitics%2F2013%2F01%2F28%2Fus-planning-for-new-drone-base-in-northwest-africa-officials-say%2F" target="_blank">Link Three</a></p>
<p><a href="http://www.MyWebsite.com/?link=ObamaMustSee.com" target="_blank">Link Four</a></p>
</body>
于 2013-01-29T04:05:48.400 回答
0
于 2013-01-29T00:28:52.353 回答
0
有效的 PHP 代码
调用文件并替换链接的 PHP 代码
<?php
$message = file_get_contents("myHTML.html");
$content = explode("\n", $message);
$URLs = array();
for($i=0;count($content)>$i;$i++)
{
if(preg_match('/<a href=/', $content[$i]))
{
list($Gone,$Keep) = explode("href=\"", trim($content[$i]));
list($Keep,$Gone) = explode("\">", $Keep);
$message= strtr($message, array( "$Keep" => "http://www.MyWesite.com/?link=$Keep", ));
}
}
echo $message;
?>
于 2013-01-29T03:36:49.230 回答
0
您可以逐行读取文件,并使用正则表达式搜索 URL,并将其替换为您自己的。这是我的做法:
$src = fopen('myHTMLemail.php', 'r');
$dest = fopen('myHTMLemail_changed.php', 'w');
while(false !== ($line = fgets($src)))
{
if(preg_match('/href./', $line))
{
fwrite($dest, preg_replace('/href="([^"]*)"/', 'http://www.myWebsite.com?link=${1}', $line));
}
else
{
fwrite($dest, $line);
}
}
fclose($dest);
fclose($src);
于 2013-01-29T03:57:19.613 回答