Preg_Replace:变量替换并删除所有非本地URL

时间:2013-07-13 12:38:11

标签: php regex preg-replace

我环顾了几个小时,但我发现的例子没有把我推到一个我可以从逻辑上拿出我需要的东西的地方所以我想我需要更具体的东西以适应我的无知并向我的书呆子哥哥寻求帮助。

问题

1)我想用一些标记替换一个非常具体的url,但是使用id作为变量(如下例所示)。

2)我有一个文本解析器,我只希望它允许链接到我的域(目前尚未实现),任何其他链接将被删除(目前使用一些strpos / strip_tags动作实现)但我想使用preg_replace允许指向我的域名的链接。

对于伪造的示例(使用url的部分作为var):

$markup = '[[-$0-]]';
$domain = 'mydomain.com';
$comment = 'This is my link example for http://mydomain.com/plan/43434 and Ii am confused';
$comment = preg_replace('&\bhttp://' . $mydomain . '/plan/(\d+)/"', $markup, $comment);
echo $comment:

期望的输出:

This is my link example for [[-43434-]] and I am confused

然后在执行此代码后,我会删除所有链接,但我的域名。我真的不确定怎么拉这个,但我可以用一些爱。

1 个答案:

答案 0 :(得分:0)

描述

这个正则表达式将:

  • 找到您的网址并将其替换为标记文字
  • 假设网址将以http://mydomain.com/plan开头,如示例文本
  • 所示

正则表达式:((?:(?!http:\/\/mydomain\.com\/plan\/).)*)http:\/\/mydomain\.com\/plan\/(\S*)

替换为:$1[[-$2-]]

enter image description here

实施例

示例文字

This http://mydomain.com/plan/12345 is my link example for http://mydomain.com/plan/43434 and I am confused

<强>代码

<?php
$sourcestring="your source string";
echo preg_replace('/((?:(?!http:\/\/mydomain\.com\/plan\/).)*)http:\/\/mydomain.com\/plan\/(\S*)/mx','$1[[-$2-]]',$sourcestring);
?>

替换后的Sourcestring

This [[-12345-]] is my link example for [[-43434-]] and I am confused