GVKun编程网logo

php-带有空格和特殊字符的URL的最佳做法(php空格符号)

8

在本文中,我们将详细介绍php-带有空格和特殊字符的URL的最佳做法的各个方面,并为您提供关于php空格符号的相关解答,同时,我们也将为您带来关于.htaccessurl中带有特殊字符的有关问题、03

在本文中,我们将详细介绍php-带有空格和特殊字符的URL的最佳做法的各个方面,并为您提供关于php空格符号的相关解答,同时,我们也将为您带来关于.htaccess url中带有特殊字符的有关问题、033 Url中特殊字符的处理、Android EditText禁止输入空格和特殊字符、Azure数据资源管理器-具有空格/特殊字符的外部表分区的有用知识。

本文目录一览:

php-带有空格和特殊字符的URL的最佳做法(php空格符号)

php-带有空格和特殊字符的URL的最佳做法(php空格符号)

我目前正在修改一个小型Web应用程序.该Web应用程序允许用户自己输入/指定类别.我注意到在数据库中,有很多类别包含空格和特殊字符,例如Cakes&纸杯蛋糕.

在前端,数据库以URL链接的形式显示所有用户定义的类别,用户可以单击它们以进一步查看类别中的内容.

前端类别链接是使用rawurlencode函数编码的,看起来像这样.

./show.PHP?category=<?PHP echo rawurlencode($e['category']); ?>

在后端,一个函数将获取URL,然后将其解码,然后再将其发送到数据库进行查询.

$category = rawurldecode(htmlspecialchars_decode($category));

它工作正常,但似乎有些“最后一刻”和“过分复杂”.

因此,我想知道,PHP中URL特殊字符和空格的最佳实践是什么?

先感谢您.

解决方法:

我更喜欢使用“弹头”方法.您可以将字符串“塞子化”,并在URL中使用塞子.

http://sourcecookbook.com/en/recipes/8/function-to-slugify-strings-in-php

您需要在数据库中为该段添加一个列,但是您可以轻松地在url中表示用户输入字段并使它们可读. “ function-to-slugify-strings-in-PHP”是一个词条,最初看起来像是“在PHP中对字符串进行子链化的功能”.

.htaccess url中带有特殊字符的有关问题

.htaccess url中带有特殊字符的有关问题

.htaccess url中带有特殊字符的问题
RewriteRule ^(r|R)(e|E)(g|G)/step2/(.*)/?$ do.php?ac=6a538ae003e30eacbd5b0c1f1d18aa50&op=active&hash=$4
偶在.htacess文件中定义上面的规则,希望
http://127.0.0.1/reg/step2/3635DBp6n66a0oRy3cvN3OvtCoPu5I2gJU2S8MyQLppdkp4wma6wjjaTBSYp%2FT189%2BJz能被解析为
http://127.0.0.1/do.php?ac=6a538ae003e30eacbd5b0c1f1d18aa50&op=active&hash=3635DBp6n66a0oRy3cvN3OvtCoPu5I2gJU2S8MyQLppdkp4wma6wjjaTBSYp%2FT189%2BJz

现在运行的时候好像有点问题,hash参数中带有特殊符号,无法正确解析,提示Object not found!
如果直接输入http://127.0.0.1/reg/step2/3635DBp6n66a0oRy3cvN3OvtCoPu5I2gJU2S8MyQLppdkp4wma6wjjaTBSYp/T189+Jz(即/和+等特殊符号不经过urlencode)可以解析,但是这样一来,hash中的参数无法还原成原来的参数。(hash参数中有2个值经过一个自定义函数加密传递,调用解码函数可以还原其中的2个值)


------解决方案--------------------
urlencode()

接收数据后 urldecode() 再调用你的解密函数
------解决方案--------------------
^(r|R)(e|E)(g|G)/ 何必这样。直接[NC]
------解决方案--------------------
实在不行 就
$url = ''xxx'';
$url = urlencode(str_replace(''/'',''!'',$url));
..........
接收数据的时候
$url = urldecode(str_replace(''!'',''/'',$url));

033 Url中特殊字符的处理

033 Url中特殊字符的处理

  在url跳转页面的时候,参数值中的#不见了,一直没有处理,今天有空看了一下,后来发现后台的过滤器之类的都没有处理,就比较奇怪了,原来是特殊字符的问题。

一:Url中的特殊字符

1.说明

  这里还是需要做到一个眼熟的,遇到的时候可以快速定位到。

  具体现象就是 用URL传参数的时候,用&符号连接,如果某一个参数中含"#$ ^ & * + ="这些符号的时候,在另一个页面getParameter就会取不到传过来的参数。

 

2.特殊字符

  

 

3.特殊字符的含义

  空格换成加号(+)
  正斜杠(/)分隔目录和子目录
  问号(?)分隔URL和查询
  百分号(%)制定特殊字符
  #号指定书签
  &号分隔参数

 

4.为啥要编码

  通常如果一样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义。

  例如Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc& ie=utf-8。如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和= 符号进行转义,也就是对其进行编码。

  又如,Url的编码格式采用的是ASCII码,而不是Unicode,这也就是说你不能在Url中包含任何非ASCII字符,例如中文。否则如果客户端浏览器和服务端浏览器支持的字符集不同的情况下,中文可能会造成问题。

  Url编码的原则就是使用安全的字符(没有特殊用途或者特殊意义的可打印字符)去表示那些不安全的字符。

 

5.Url可以使用的字符

  RFC3986文档规定,Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、- _ . ~ 4个特殊字符以及所有保留字符。

 

6.保留字符

  

 

7.不安全字符

  还有一些字符,当他们直接放在Url中的时候,可能会引起解析程序的歧义。这些字符被视为不安全字符,原因有很多。

  

 

二:JS处理

1.escape,encodeURI和encodeURIComponent的区别

  Javascript中提供了3对函数用来对Url编码以得到合法的Url,它们分别是escape / unescape,encodeURI / decodeURI和encodeURIComponent / decodeURIComponent。由于解码和编码的过程是可逆的,因此这里只解释编码的过程。

  这三个编码的函数——escape,encodeURI,encodeURIComponent——都是用于将不安全不合法的Url字符转换为合法的Url字符表示,它们有以下几个不同点。

 

2.其安全字符

  就是不会编码的字符

  

 

3.对Unicode的编码不同

  这三个函数对于ASCII字符的编码方式相同,均是使用百分号+两位十六进制字符来表示。

  但是对于Unicode字符,escape的编码方式是%uxxxx,其中的xxxx是用来表示unicode字符的4位十六进制字符。这种方式已经被W3C废弃了。但是在ECMA-262标准中仍然保留着escape的这种编码语法。

  encodeURI和encodeURIComponent则使用UTF-8对非ASCII字符进行编码,然后再进行百分号编码。这是RFC推荐的。因此建议尽可能的使用这两个函数替代escape进行编码。

 

4.小实验

  

 

三:总结

  今天遇到的问题,查了一下,还是更适合使用encodeURIComponent()

  当决定使用哪个函数的时候,还需要查一下其安全字符。

 

Android EditText禁止输入空格和特殊字符

Android EditText禁止输入空格和特殊字符

有时候我们需要限制EditText输入的字符类型,如空格,特殊字符等,这时候我们可以使用系统提供的输入过滤器――InputFilter。具体实现如下:

/**
  * 禁止EditText输入空格
  * @param editText
  */
 public static void setEditTextInhibitInputSpace(EditText editText){
  InputFilter filter=new InputFilter() {
   @Override
   public CharSequence filter(CharSequence source,int start,int end,Spanned dest,int dstart,int dend) {
    if(source.equals(" ")return "";
    else return null;
   }
  };
  editText.setFilters(new InputFilter[]{filter});
 }

/**
  * 禁止EditText输入特殊字符
  * @param editText
  */
 public static void setEditTextInhibitInputSpeChat(EditText editText){
  InputFilter filter=new InputFilter() {
   @Override
   public CharSequence filter(CharSequence source,int dend) {
    String speChat="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()――+|{}【】‘;:”“'。,、?]";
    Pattern pattern = Pattern.compile(speChat);
    Matcher matcher = pattern.matcher(source.toString());
    if(matcher.find())return "";
    else return null;
   }
  };
  editText.setFilters(new InputFilter[]{filter});
 }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程小技巧!

Azure数据资源管理器-具有空格/特殊字符的外部表分区

Azure数据资源管理器-具有空格/特殊字符的外部表分区

如何解决Azure数据资源管理器-具有空格/特殊字符的外部表分区?

由于某些原因,我不了解,因此我无法使用以下方案:

我有一个定义为的外部表

.create external table Sensors_Datalake (event_id: int,timestmp: datetime,sensor_type: string,sensor: string,value: decimal) 
kind=blob 
partition by (typePart:string=sensor_type,sensorPart: string=sensor,Month:datetime = startofmonth(timestmp)) 
pathformat = ("sensor_type=" typePart "/sensor=" sensorPart "/" datetime_pattern("''year=''yyyy''/month=''MM",Month)) 
dataformat=parquet
( 
   h@''https://blabla.blob.core.windows.net/adx;secret'' 
) 
with (sampleUris = true)

然后,我从主传感器表(相同的模式)向其中导出一些数据。它可以正常工作,并且我看到实木复合地板文件蜂鸣生成。

重要提示:传感器的字符串包含破折号和一些空格,例如。 81 1 001-4(81 [space] 1 [space] 001-4)

现在可以了

external_table("Sensors_Datalake")
| take 1

我得到一些结果

event_id: 5
timestap: some timestamp
sensor_type: E 5 
sensor: 81 1 001-4

现在,如果我要做

external_table("Sensors_Datalake")
| where sensor_type == "E 5"
| count

我得到零结果。传感器或组合相同

external_table("Sensors_Datalake")
| where sensor_type == "E 5" and sensor == "81 1 001-4"
| count

仍然为零。

我需要做一些转义或类似操作才能使其正常工作吗?我浏览了文档,没有发现任何提示。

相同的代码在我要分区的数据中没有任何空格就可以了。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

我们今天的关于php-带有空格和特殊字符的URL的最佳做法php空格符号的分享已经告一段落,感谢您的关注,如果您想了解更多关于.htaccess url中带有特殊字符的有关问题、033 Url中特殊字符的处理、Android EditText禁止输入空格和特殊字符、Azure数据资源管理器-具有空格/特殊字符的外部表分区的相关信息,请在本站查询。

本文标签: