用斜杠结尾的url的正则表达式

时间:2013-08-01 15:55:28

标签: php regex

我有preg_replace的正则表达式,用于替换以斜杠(/)结尾的url。但它最后还用.jpg取代了网址。对于网址,它工作正常,但它不应取代.jpg网址。有人能帮帮我吗?

protected function _rewriteUrls($sContent)
{
        $target      = $this->getConfig()->getConfigParam('sShopURL').$this->_getToxidLangSeoSnippet().'/';
        $source    = str_replace('.','\.',$this->_getToxidLangSource());
        $actual    = '%href="'.$source.'(?=.*?.html)%';
        $should    = 'href="'.$target;
        return preg_replace($actual, $should, $sContent);
}

此代码来自名为TOXID的OXID模块,用于将OXID与wordpress等其他系统相结合。 $ sContent应该包含Wordpress博客中的任何HTML。所以这基本上重写了URL,使它看起来像我在OXID商店内导航。正如你所看到的,最初它的Regex中有.html,但如果你有不同的URL模式,这是没用的。所以我将其改为斜杠(/)。不幸的是,它也会更改.jpg的网址。

以下是sContent的示例数据: http://pastebin.com/nTXAAhWq

2 个答案:

答案 0 :(得分:1)

$actual    = '%href="'.$source.'(?=.*?/)"%'; //if $sContent = '.. href="my/path/" ...'
$should    = 'href="'.$target.'"';

$指定该行的结尾,如果$sContenthref属性的结束语音标记

之前结束,则非常有用
$actual    = '%href="'.$source.'(?=.*?/)$%'; //if $sContent = 'href="my/path/'

答案 1 :(得分:0)

根据您链接的内容进行修改:

$actual = '%href="'.$source.'(?=.*?/")%';