Php 将%21等的编码更改为字符

Php 将%21等的编码更改为字符,php,encoding,urlencode,Php,Encoding,Urlencode,我正在开发一个工具,它通过用户输入的不同字体选项生成图像。我现在遇到的问题是,我用来创建这些图像的类使用$\u GET检索用户输入。用户输入看起来像urlencode($text),它为!生成%21!等等,而不是角色。urldecode()似乎不起作用 $text=isset(urldecode($\u GET['text'])$_获取['text']:''您在错误的东西上包装了isset $text = isset($_GET['text']) ? urldecode($_GET['text'

我正在开发一个工具,它通过用户输入的不同字体选项生成图像。我现在遇到的问题是,我用来创建这些图像的类使用$\u GET检索用户输入。用户输入看起来像
urlencode($text)
,它为!生成%21!等等,而不是角色。urldecode()似乎不起作用


$text=isset(urldecode($\u GET['text'])$_获取['text']:''

您在错误的东西上包装了
isset

$text = isset($_GET['text']) ? urldecode($_GET['text']) : '';

你把
isset
包装在错误的东西上

$text = isset($_GET['text']) ? urldecode($_GET['text']) : '';

您没有将
urldecode($\u GET['text'])
分配给
$text
变量。您正在检查是否设置了
urldecode($\u GET['text'])
,然后分配
$\u GET['text']

试一试


您没有将
urldecode($\u GET['text'])
分配给
$text
变量。您正在检查是否设置了
urldecode($\u GET['text'])
,然后分配
$\u GET['text']

试一试


我认为
urldecode($\u GET['text'])
有时可以接受空值,因此请在前面使用
isset()
确定变量是否已设置且不为空。如果您这样尝试:

$text=isset($\u GET['text'])$_获取['text']:'';
$text=urldecode($text);
它会起作用的。
bool-isset(mixed$var[,mixed$…])
:在这种情况下,
$var
是要检查的变量,不是值,因此不能使用
urldecode($\u GET['text'])
isset()
的字符串作为参数,包括
empty()


非常感谢Stano的评论,他的代码很有用:

我认为
urldecode($\u GET['text'])
有时会取空值,所以在之前使用
isset()
确定变量是否已设置且不为空。如果您这样尝试:

$text=isset($\u GET['text'])$_获取['text']:'';
$text=urldecode($text);
它会起作用的。
bool-isset(mixed$var[,mixed$…])
:在这种情况下,
$var
是要检查的变量,不是值,因此不能使用
urldecode($\u GET['text'])
isset()
的字符串作为参数,包括
empty()


非常感谢Stano的评论,他的代码很有用:

我明白了,我错了。我打开了电脑,你们是对的,
$x
被永久设置了,
$\u GET['text']
也没有设置。我明白了,我错了。我打开了电脑,你们是对的,
$x
设置为永久,或者
$\u GET['text']
未设置。