php变量名哪个不合法,清理PHP中合法变量名称的字符串

我有类似以下代码的代码,该代码声明一个类,其名称基于检索到的字符串.但是问题是该字符串可能包含PHP不能接受为类名的非法字符.因此,在将其用作类名之前,有没有一种好的方法可以对字符串进行清理?

$retrieved_string = 'some unformatted string; it may contain illegal characters to be passed as a class name.';

$strMyScript = basename(__FILE__, ".php");

$strMyScript = sanitize_variable($strMyScript);

$strClassName = sanitize_variable($retrieved_string);

eval('

class ' . $strMyScript . '_' . $strClassName . ' extends AnotherClass {

// some code here

}

');

funaction sanitize_variable($string) {

// sanitize the string

}

解决方法:

首先确定您需要什么过滤器或验证器.验证器将返回true / false.然后,您可以引发异常,为用户产生错误或仅忽略文件.另一种选择是使用过滤器,该过滤器将有效地从输入字符串中删除字符.

public function sanitize($input)

{

$pattern = '/[^a-zA-Z0-9]/';

return preg_replace($pattern, '', (string) $input);

}

您可能还需要检查unicode.模式是:

public function sanitize($input)

{

if (!@preg_match('/\pL/u', 'a'))

{

$pattern = '/[^a-zA-Z0-9]/';

}

else

{

$pattern = '/[^\p{L}\p{N}]/u';

}

return preg_replace($pattern, '', (string) $input);

}

还应考虑的问题:

>您要启用空白支持吗?在这种情况下,您将需要在$pattern变量中添加一个空格.

>文件名是否使用英语以外的其他语言?然后,您将需要进行一些特定于语言环境的操作,以使$pattern保持最新状态.

高温超导

标签:variables,sanitization,string,php,class

来源: https://codeday.me/bug/20191031/1979346.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值