1

http:// と www. URL 文字列の先頭から削除し、末尾の / がある場合は削除します。

例えば

  • http://www.google.com/だろうgoogle.com
  • https://yahoo.com?page=1 だろうyahoo.com?page=1
  • fancysite.com/articles/2012/だろう fancysite.com/articles/2012

JS側で使用しているコードは次のとおりです。

row.page_href.replace(/^(https?|ftp):\/\//, '')

そして、私がphp側に使用しているコードは次のとおりです。

$urlString = rtrim($urlString, '/');
$urlString = preg_replace('~^(?:https?://)?(?:www[.])?~i', '', $urlString);

ご覧のとおり、JS 正規表現は現在 http:// のみを削除し、php はすべてを行うために 2 つのステップを必要とします。

4

2 に答える 2

4
function cleanUrl($url)
{
  if (($d= parse_url($url)) !== false) // valid url
  {
    return sprintf('%s%s%s',
      ltrim($d['host'], 'www.'),
      rtrim($d['path']. '/'),
      !empty($d['query']) ? '?'.$d['query'] : '');
  }
  return $url;
}

私はparse_urlを利用します(「クリーン」とともにURLを検証します)

于 2012-12-28T16:43:29.320 に答える
0

#(https?(://))?(www.?)?(.*)#i

私にとってはうまくいきました。(.*)URL の RFC 標準に一致するように最後を変更できます。

出力:

david@david-desktop ~ $ php -a
Interactive shell

php > $str = preg_replace('#(https?(://))?(www.?)?(.*)#i', '$4', 'https://www.google.ca');
php > echo $str . PHP_EOL;
google.ca
php > $str = preg_replace('#(https?(://))?(www.?)?(.*)#i', '$4', 'https://google.ca');
php > echo $str . PHP_EOL;
google.ca
php > $str = preg_replace('#(https?(://))?(www.?)?(.*)#i', '$4', 'http://google.ca');
php > echo $str . PHP_EOL;
google.ca
php > 
于 2012-12-28T16:42:04.517 に答える