PHP preg_match URL替换用法

时间:2013-05-25 03:57:26

标签: url replace preg-replace preg-match

我在$ url中有两个URL模式结构

  1. news.oxo.com/site/data/html_dir/2013/05/25/2013052500007.html
  2. salute.com/arti/society/health/588947.html
  3. 并希望将其更改为

    1. m.oxo.com/article.html?contid=2013052500007
    2. m.salute.com/article.html?contid=2013052500007
    3. 我试过了

      <?php $url_m = preg_replace("salute.com","m.salute.com",$url); ?>
      <?php echo $url_m; ?>
      

      我想我完全迷失了-_- ;;;;

      任何帮助都可能受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

谢谢Absolute ZERO。我想将您的ID乘以无限:)

我已经尝试过你的答案,但它不起作用。所以我对它进行了一些调整。在继续之前,我应该更多地澄清我的情况以帮助读者阅读这篇文章。

我在PHP中有一个变量$ urls。这是用于将用户发送到目标页面的链接URL。 在这个变量中,有许多模式,包括那两个:

news.oxo.com/site/data/html_dir/2013/05/25/2013052500007.html salute.com/arti/society/health/588947.html

通过您的回答和我的调整,我设法将用户发送到移动页面。

$urls = get_post_link(~~~~~);
//patterns for m.oxo
$replacements[0] = 'm.oxo.com/article.html?contid=$1';
$patterns[0] = "!news.oxo.com/site/data/html_dir/[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]+)\.html$!";

//patterns for m.salute 
$replacements[1] = 'm.salute.com/article.html?contid=$1';
$patterns[1] = '!salute\.com/[^/]+/[^/]+/[^/]+/([0-9]+)\.html$!';

$url = preg_replace($patterns,$replacements,$urls);

关于这个问题我还有一个问题。或许通过打开另一个问题来发布它是正确的,但由于新问题与旧问题密切相关,我把它放在这里。

新问题是应该使用替换和模式来替换

kr.hello.feedsportal.com/c/34762/f/640634/s/2c6bcfa2/l/0L0Shani0Bco0Bkr0Carti0Cpolitics0Cpolitics0Igeneral0C589130A0Bhtml/story01.htm

www.hello.co.kr/arti/society/society_general/589159.html

谢谢!

答案 1 :(得分:0)

如果您负责这两个URL并使用Apache,则可以使用.htaccess处理旧Apache服务器中的旧地址:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^news.oxo.com$
RewriteRule ^site/data/html_dir/[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]+)\.html$ http://m.oxo.com/article.html?contid=$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(www\.)?salute.com$
RewriteRule ^[^/]+/[^/]+/[^/]+/([0-9]+)\.html$ http://m.salute.com/article.html?contid=$1 [R=301,L]

如果您没有责任,并且只想重写PHP中的URL(例如,如果您要更改数据库中的链接),您可以这样做:

<?php
$original_URLs[0] = "news.oxo.com/site/data/html_dir/2013/05/25/2013052500007.html";
$original_URLs[1] = "salute.com/arti/society/health/588947.html";

//patterns for m.oxo
$replacements[0] = 'm.oxo.com/article.html?contid=$1';
$patterns[0] = "!news.oxo.com/site/data/html_dir/[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]+)\.html$!";

//patterns for m.salute 
$replacements[1] = 'm.salute.com/article.html?contid=$1';
$patterns[1] = '!salute\.com/[^/]+/[^/]+/[^/]+/([0-9]+)\.html$!';


foreach($original_URLs as $key=>$url){
    echo "<pre>".preg_replace($patterns,$replacements,$url)."</pre>";
}
?>

如果您尝试替换嵌入在文章中的链接,也可以用字符串替换替换foreach。

echo "preg_replace($patterns,$replacements,$some_article);