0

我已经环顾了几个小时,但我发现的例子并没有把我推到一个我可以在逻辑上提出我需要的地方,所以我认为我需要一些更具体的东西来适应我的无知并提出要求我的书呆子程序员兄弟寻求帮助。

问题

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

然后在执行此代码后,我将删除所有链接,但我自己的域中的链接除外。我真的不知道如何把它拉下来,但我可以用一些爱。

4

1 回答 1

0

描述

这个正则表达式将:

  • 找到您的网址并用标记的文本替换它们
  • 假设 url 将以http://mydomain.com/plan示例文本中所示的开头

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

用。。。来代替:$1[[-$2-]]

在此处输入图像描述

例子

示例文本

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);
?>

替换后的源字符串

This [[-12345-]] is my link example for [[-43434-]] and I am confused
于 2013-07-13T14:33:37.177 回答