我打了一个菜鸟墙,我不确定如何克服它。
当从数据库显示某些内容时,此内容将包含HTML标记。
其中一个标记是<a>
链接。
其href将等于以下任何一项。
http://www.example.com
http://www.example.com/
http://www.example.com/some/other/stuff
/some/other/stuff
/
www.example.com
www.example.com/
我需要做什么,并且我已经尝试使用str_replace()的逻辑,但我不能让它100%正常工作......将所有上述链接转为此。
http://www.example.com/2012_2013
http://www.example.com/2012_2013/
/2012_2013/some/other/stuff
/2012_2013
www.example.com/2012_2013
www.example.com/2012_2013/
我的问题主要是转向
/some/other/stuff
到
/2012_2013/some/other/stuff
当我不知道/this/could/be
是什么时,我如何找到它并在/2012_2013
前加上
这似乎不起作用100%
$content = str_replace("http://www.example.com/","http://www.example.com/2012_2013/",$wData['field_id_2']);
$content = str_replace('href="/"','href="/2012_2013/"',$content);
echo $content;
提前致谢。
答案 0 :(得分:0)
我只需/
explode并将2012_2013
添加到正确的位置,然后implode数组。
这样的事情:
$link = '<a href="http://www.example.com/some/other/stuff">http://www.example.com/some/other/stuff</a>';
$linkParts = explode('/', $link);
$linkParts[2] = $linkParts[2] . '/2012_2013';
$linkParts[7] = $linkParts[7] . '/2012_2013';
$finalLink = implode('/', $linkParts);
echo $finalLink;
通过上述我假设您的域格式不会改变。
这看起来像是一个数据库内容问题。最好在数据库中正确更新它们,你不需要摆弄输出。
答案 1 :(得分:0)
在parse_url
函数的帮助下,以下代码应该适合您。
$arr = array('http://www.example.com', 'http://www.example.com/',
'http://www.example.com/some/other/stuff', '/some/other/stuff',
'/some/other/stuff/', '/2012_2013/some/other/stuff', '/', 'www.example.com',
'www.example.com/');
$ret = array();
foreach ($arr as $a) {
if ($a[0] != '/' && !preg_match('#^https?://#i', $a))
$a = 'http://' . $a;
$url = parse_url ($a);
$path = '';
if (isset($url['path']))
$path = $url['path'];
$path = preg_replace('#^((?!/2012_2013/).*?)(/?)$#', '/2012_2013$1$2', $path );
$out= '';
if (isset($url['scheme'])) {
$out .= $url['scheme'] . '://';
if (isset($url['host']))
$out .= $url['host'];
}
$out .= $path;
$ret[] = $out;
}
print_r($ret);
Array
(
[0] => http://www.example.com/2012_2013
[1] => http://www.example.com/2012_2013/
[2] => http://www.example.com/2012_2013/some/other/stuff
[3] => /2012_2013/some/other/stuff
[4] => /2012_2013/some/other/stuff/
[5] => /2012_2013/some/other/stuff
[6] => /2012_2013/
[7] => http://www.example.com/2012_2013
[8] => http://www.example.com/2012_2013/
)