繁体   English   中英

如何从URL中删除所有特殊字符?

[英]How to remove all special characters from URL?

我上课

public function convert( $title )
    {
        $nameout = strtolower( $title );
        $nameout = str_replace(' ', '-', $nameout );
        $nameout = str_replace('.', '', $nameout);
        $nameout = str_replace('æ', 'ae', $nameout);
        $nameout = str_replace('ø', 'oe', $nameout);
        $nameout = str_replace('å', 'aa', $nameout);
        $nameout = str_replace('(', '', $nameout);
        $nameout = str_replace(')', '', $nameout);
        $nameout = preg_replace("[^a-z0-9-]", "", $nameout);    

        return $nameout;
    }

但是,当我使用öü等特殊字符时,我无法使其正常工作,有人可以在这里帮助我吗? 我使用PHP 5.3。

然后呢:

<?php
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>

来自: http : //php.net/manual/zh/function.urlencode.php

SO线程的第一个答案包含您需要执行此操作的代码。

不久前,我为一个正在从事的项目编写了此函数,但无法使RegEx正常工作。 它不是最好的方法,但是可以。

function safeURL($input){
    $input = strtolower($input);
    for($i = 0; $i < strlen($input); $i++){
        $working = ord(substr($input,$i,1));
        if(($working>=97)&&($working<=122)){
            //a-z
            $out = $out . chr($working);
        } elseif(($working>=48)&&($working<=57)){
            //0-9
            $out = $out . chr($working);
        } elseif($working==46){
            //.
            $out = $out . chr($working);
        } elseif($working==45){
            //-
            $out = $out . chr($working);
        }
    }
    return $out;
}

这是一个功能,可以帮助您完成工作,它用捷克语编写: http : //php.vrana.cz/vytvoreni-pratelskeho-url.php并翻译成英语

这是它的另一种说法( 来自Symfony文档 ):

<?php 
function slugify($text)
{
  // replace non letter or digits by -
  $text = preg_replace('~[^\\pL\d]+~u', '-', $text);

  // trim
  $text = trim($text, '-');

  // transliterate
  if (function_exists('iconv'))
  {
    $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
  }

  // lowercase
  $text = strtolower($text);

  // remove unwanted characters
  $text = preg_replace('~[^-\w]+~', '', $text);

  if (empty($text))
  {
    return 'n-a';
  }

  return $text;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM