Heim > Backend-Entwicklung > PHP-Tutorial > 请教正则匹配,有个小疑惑

请教正则匹配,有个小疑惑

WBOY
Freigeben: 2016-06-23 13:54:25
Original
728 Leute haben es durchsucht

<?php$str='唐老鸭'; //老,唐老鸭等有老字的都不能通过$pre='/[\'\"\ \ ]/'; //把全角空格去掉就可以if(preg_match($pre, $str)){	echo $str.'不通过';}else{	echo $str.'通过';}?>
Nach dem Login kopieren

求解,谢谢。


回复讨论(解决方案)

//老,唐老鸭等有老字的都不能通过
规则这样就可以了:$pre='/老/';
preg_match返回匹配到的次数,0或1,它只执行一次匹配
'/[\'\"\ \ ]/'
这个规则是查找,单引号,双引号,半间空格,全角空格,这四个的集合,只要有任意一个,都不通过,除了单引号要加\转义外,其它都可以不加

指定一下编码

$pre='/[\'\"\ \ ]/u';
Nach dem Login kopieren
Nach dem Login kopieren

$str='唐老鸭'; $pre='/[\'\"\ \ ]/';if(preg_match($pre, $str)){    echo $str.'不通过';}else{    echo $str.'通过';}
Nach dem Login kopieren
Nach dem Login kopieren
唐老鸭通过
$str='唐老 鸭'; $pre='/[\'\"\ \ ]/';if(preg_match($pre, $str)){    echo $str.'不通过';}else{    echo $str.'通过';}
Nach dem Login kopieren
Nach dem Login kopieren
唐老 鸭不通过

不知道你要做什么

$str='唐老鸭'; $pre='/[\'\"\ \ ]/';if(preg_match($pre, $str)){    echo $str.'不通过';}else{    echo $str.'通过';}
Nach dem Login kopieren
Nach dem Login kopieren
唐老鸭通过
$str='唐老 鸭'; $pre='/[\'\"\ \ ]/';if(preg_match($pre, $str)){    echo $str.'不通过';}else{    echo $str.'通过';}
Nach dem Login kopieren
Nach dem Login kopieren
唐老 鸭不通过

不知道你要做什么



不好意思,我的问题没有表达清楚。
就是检测$str字符串是否包含$pre中的单引号空格等,有就表示不通过,没有就表示通过。
例如:$str='你好' 是可以通过的
$str='你 好' 两字中间有空格是不能通过的
但我发现$str='唐老鸭'或$str='老'都不能通过,两个都没有包含半角空格全角空格单引号双引号,很奇怪为什么?
谢谢。

//老,唐老鸭等有老字的都不能通过
规则这样就可以了:$pre='/老/';
preg_match返回匹配到的次数,0或1,它只执行一次匹配
'/[\'\"\ \ ]/'
这个规则是查找,单引号,双引号,半间空格,全角空格,这四个的集合,只要有任意一个,都不通过,除了单引号要加\转义外,其它都可以不加


不好意思,我的问题没有表达清楚。
就是检测$str字符串是否包含$pre中的单引号空格等,有就表示不通过,没有就表示通过。
例如:$str='你好' 是可以通过的
$str='你 好' 两字中间有空格是不能通过的
但我发现$str='唐老鸭'或$str='老'都不能通过,两个都没有包含半角空格全角空格单引号双引号,很奇怪为什么?
谢谢。

没有呀,我那两个测试结果有什么不对吗?

没有呀,我那两个测试结果有什么不对吗?


我这里第一个没通过,不知道为什么


没有呀,我那两个测试结果有什么不对吗?


我这里第一个没通过,不知道为什么


把$pre中的全角的大空格去掉就可以

#2 应经说了,utf-8 编码就加个 u 属性


没有呀,我那两个测试结果有什么不对吗?


我这里第一个没通过,不知道为什么

#2 应经说了,utf-8 编码就加个 u 属性



没有呀,我那两个测试结果有什么不对吗?


我这里第一个没通过,不知道为什么


好的谢谢

指定一下编码

$pre='/[\'\"\ \ ]/u';
Nach dem Login kopieren
Nach dem Login kopieren


谢谢

如果是我解决这个,不想用正则~提供一种思路讨论下
代码粗糙没测试,有错误请原谅

$str = '唐 老' 鸭';$search = array(' ', ','); //需要检测的字符$replace = ' '; //禁用字符全换成空格$str = str_replace($search, $replace, $str);if(strpos($str, ' ') !== false){ // 判断有没有空格    echo '不通过';}
Nach dem Login kopieren

 离开编辑器果然原形毕露

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage