我正在几个由PHP和MySQL支持的网站上工作,并希望将我的所有网址更改为小写,并用破折号替换下划线。因此,URL mysite / Topics / Tic_Tac_Toe将更改为mysite / topics / tic-tac-toe。
我想知道是否有人可以建议一个能自动完成工作的正则表达式。如果一次做两件事太多了,那么我想至少能够把所有东西改成小写。我可能会找到另一种替换下划线的方法。
我想要更改的链接都是本地链接,大多数采用以下形式之一:
<a href="/Topics/New_York title="New York">New York</a>
<a href=<?php echo $GS_URL; >/Topics/New_York" title="New York/New York</a>
<a href='.$GS_URL.'/Topics/New_York" title="New York/New York</a>
但是,部分名称会有所不同,包括主题,参考,世界等。值$ GS_URL(代表域名)也会有所不同,包括$ GW_URL,$ GZ_URL和$ PX_URL。所以我认为简单地使用影响每个LOCAL链接的正则表达式是安全的;即每个不以http://开头的链接。另外,我不希望它影响到图片的链接,包括以下内容:
<a href="'.$PX_URL.'/images/Maps/US/Red_Blue_States.png" title="map">map</a>
如果我要求的内容过于复杂,那么一个好的替代方案就是正则表达式会影响以/ Topics或/ topics开头的每个网址(我已经更改/主题到/某些文件中的主题) ),像这样...
<a href="/Topics/New_York title="New York">New York</a>
然后我可以进行搜索和替换操作,然后将其从/ Topics更改为/ World - / world,然后/ Reference / / reference等。
另外,我应该提到我用来执行这些搜索和替换操作的软件是Dreamweaver和TextWrangler。
答案 0 :(得分:0)
如果您的网站使用LINUX环境,如果您的网址是STATIC驱动的,那么您的问题无法解决,我担心,但更改数据/文件/包含/电话,一切都由您自己 - 手动。在LINUX平台上更改网址上的上限会影响核心和.html
文件(如果你在开发过程中使用Windows平台工作,很难跟踪),那么可能友好的网址功能会受到影响。当网站登陆LINUX时,网上真是一团糟。
无论如何,如果你只想更改网址(你要问的是什么),你可以使用字符串拆分并玩这个代码。只需将c / p放入index.php中,如果给定的PHP代码结构有用,您将知道如何处理它。
//choice of img types for uries not to be changed..
$nochange = array('.png','.gif','.jpg');
$uri = isset($_SERVER['REQUEST_URI']) ? strip_tags($_SERVER['REQUEST_URI']) : '';
//for now ignore server uri, lets set some possible, problematic uri (uncoment after youre done)
$uri = 'www.extra.mysite/Topics/png/BomBastic/Tic_Tac_Toe-Candies/hoT_GIRls-OnA_Va-CAT-Ion.jpg';
$urlvariables = (substr($uri, 0, 1) == '/') ? substr($uri, 1) : $uri;
$variables = explode('/', $uri);
$ec = (count($variables)-1);
if(preg_match('#(\.png$)|(\.jpg$)|(.gif$)#', $variables[count($variables)-1]))
{
$last = $variables[count($variables)-1];
for($i = 0; $i < $ec; $i++)
{
$var .= $variables[$i] . '/';
}
$var = str_replace('_', '-', $var);
$var = strtolower($var) . $last;
}
else
{
$var = str_replace('_', '-', $var);
$var = strtolower($uri);
}
//final echo
echo $var;
祝你好运!