正则表达式 - 在文本中查找,重写和替换标记

时间:2012-11-15 18:26:36

标签: php regex

我需要在文本字符串中捕获自定义“标记”,重写并替换它。 它看起来像:

<mytag=http://url.com/file.php?some=variable&another=variable>

首先我需要从tag中捕获url,然后用我的函数重写它,然后用new url替换整个标记。任何人都可以帮助我如何捕捉和替换它?在文本中可以有更多带有各种网址的标签。

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

    $my_tag = "<mytag=http://url.com/file.php?some=variable&another=variable>";
    preg_match( "/<mytag=(.*)>/", $my_tag, $matches );
    $new_tag = str_replace( $matches[1], "http://newurl.com", $my_tag);

$new_tag变量将以下列结果:

<mytag=http://newurl.com>

答案 1 :(得分:0)

那是微不足道的。你有足够的背景和锚点。基本上使用preg_replacepreg_repace_callback(对于更复杂的替换方案)的工作原理如下:

$src = preg_replace('~  <mytag=  (http://[^>]+)  >  ~smix', '<a href=$1>$1</a>', $src);

这里的空白是装饰性的。至关重要的是[^>]不匹配,()用于将网址捕获为$1