我有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
答案 0 :(得分:1)
$actual = '%href="'.$source.'(?=.*?/)"%'; //if $sContent = '.. href="my/path/" ...'
$should = 'href="'.$target.'"';
$
指定该行的结尾,如果$sContent
在href
属性的结束语音标记
$actual = '%href="'.$source.'(?=.*?/)$%'; //if $sContent = 'href="my/path/'
答案 1 :(得分:0)
根据您链接的内容进行修改:
$actual = '%href="'.$source.'(?=.*?/")%';