PHP url字符串,带有特殊字符

时间:2015-07-23 07:36:52

标签: php string variables

我有一个看起来像这样的网址:

http://www.example.com?id=1&user=Test&name=Test23423&country=us

如果网址是这样的,它可以正常工作。但是有些用户使用特殊字符(例如"&"),如下所示:

http://www.example.com?id=1&user=Te&st&name=Test&123&country=us

我怎样才能转换这个字符串,最后一切正常?

3 个答案:

答案 0 :(得分:1)

首先使用你的锚标签:

<a href="try.php/?id=1&user=<?php echo urlencode('Te&st'); ?>&name=<?php echo urlencode('Te&st'); ?>">Click Here</a>

在其他页面上获得如下值:

echo $_GET['user'];

我希望它对你有用

答案 1 :(得分:-1)

像这样使用

echo $test=urlencode('http://www.example.com?id=1&user=Test&name='.htmlspecialchars('Test&123').'&country=us');
echo "<br />";
echo urldecode($test);

您可以创建如下所示的功能,以便检查&#34;&amp;&#34;。如果您想要所有特殊字符的功能,请告诉我。

$test = 'http://www.example.com?id=1&user=Te&st&name=Test&123&country=us';
foreach (explode("&", $test) as $key => $item) {
    if (strpos($item, "=") === FALSE) {
        $arr[$key - 1].="&" . $item;
    } else {
        $arr[$key] = $item;
    }
}
print_r($arr);

答案 2 :(得分:-1)

使用此功能我认为它可以帮助你:

function seo_friendly_url($string){
    $string = str_replace(array('[\', \']'), '', $string);
    $string = preg_replace('/\[.*\]/U', '', $string);
    $string = preg_replace('/&(amp;)?#?[a-z0-9]+;/i', '-', $string);
    $string = htmlentities($string, ENT_COMPAT, 'utf-8');
    $string = preg_replace('/&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig|quot|rsquo);/i', '\\1', $string );
    $string = preg_replace(array('/[^a-z0-9]/i', '/[-]+/') , '-', $string);
    return strtolower(trim($string, '-'));
}

然后你需要像这样编码一个用户名:

seo_friendly_url($test) ;