我有一个php文件,用于在Facebook和Twitter上分享我的用户的帖子。例如,如果我点击Twitter图标,我会看到一个屏幕,其中自动编写了指向我网站的超链接。这很好,但我想删除自动显示在Twitter屏幕上的网址的www.
部分。我想这与location.host有关,所以我用谷歌搜索,但我找不到这个问题的正确答案。
以下是我的代码示例:
function e(f,i,an)
{
with(document)
{
write('<div style="width:100%"><table id=m'+i+' style="visibility:hidden"><tr>');
write('<td id="vst' + i + '" style="white-space:nowrap"> </td>');
write('<td hr(this.childNodes[0])" title="share on facebook"><a href="javascript:od(\'http://www.facebook.com/sharer.php?u=' + location.host + '/e/'+ i +'\',900,400)" class=icon><img src="images/facebook.png" target="_blank"></a></td>');
write('<td hr(this.childNodes[0])" title="share on twitter"><a href="javascript:od(\'http://twitter.com/home?status=' + location.host + '/e/'+ i +' - %20read!\',800,600)" class=icon><img src="images/twitter.png" target="_blank"></a></td>');
write('<td class=ei><a name="cid'+i+'"></a><a href="e/'+i+'">( #'+i+' )</a></td>');
document.write('<td> </td>');
我的第二个问题是:如何在Twitter屏幕上添加自定义标题:例如,我的网站名称,而不必将location.host与正在共享的TOPICNAME的标题一起使用?
答案 0 :(得分:10)
如果您只想获得二级和顶级域名,而不是任何子域名,这可以帮助您:
var url = location.host; // e.g. "www.example.com"
return url.split(".").slice(-2).join("."); // "example.com"
这也适用于其他子域,甚至适用于三个以上的子域。
答案 1 :(得分:6)
首先......你可以修改主持人:
location.host.replace('www.','')
修改:解决问题
在第一次评论中再次投票,并且看到很多投票,我将尝试解决对www
以外的www
以外的子域名的关注......
仍然没有针对此解决方案的正则表达式,主要是因为通常很难维护正则表达式,并且有很多开发人员根本不接触正则表达式...
var cleaned_host;
if(location.host.indexOf('www.') === 0){
cleaned_host = location.host.replace('www.','');
}
// do something with `cleaned_host`
......或者更简洁......
location.host.indexOf('www.') && location.host || location.host.replace('www.', '');
// evaluates to hostname with starting `www.` removed
答案 2 :(得分:2)
location.host.replace(的 'http:// WWW。', '')
或(如果你想保留http://)
location.host.replace(的 'http://www.','http://')
确保只在开头时才更换www。
答案 3 :(得分:0)
<小时/> 如果您需要删除 www。或 w。或 ww。或 ww2。等,请执行以下代码可能会变得很方便。
var searchPattern = "^w+\\d*\\." ;
var rx = new RegExp( searchPattern, "gim" ) ;
var replacePattern = "" ;
var replacedText = sourceText.replace( rx, replacePattern ) ;
preg_replace( '|(?mi-Us)^w+\\d*\\.|D', '', $sourceText, $limit, $count) ;
答案 4 :(得分:0)
currently accepted answer坚持不使用正则表达式,这意味着它不涵盖注释中所述的某些情况。
但是,这里有一个不包含正则表达式的解决方案,应该涵盖所有内容。我还在hostname
上使用了host
:
function thedomain(domain) {
var subdomain = 'www.', subdomain_len = subdomain.length;
if (domain.substr(subdomain, subdomain_len) == subdomain)
domain = domain.substring(subdomain_len)
return domain;
}
console.log(thedomain(location.hostname)); // Strips www if needed
console.log(thedomain('www.foobar.com')); // Strips www
console.log(thedomain('wwww.foobar.com')); // Does NOT strip www
console.log(thedomain('prefix.www.foobar.com')); // Does NOT strip www