Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 验证和匹配特定格式的字符串_Php_Regex_Preg Match_Pcre_Preg Match All - Fatal编程技术网

Php 验证和匹配特定格式的字符串

Php 验证和匹配特定格式的字符串,php,regex,preg-match,pcre,preg-match-all,Php,Regex,Preg Match,Pcre,Preg Match All,我有以下正则表达式模式,可以很好地工作: #^(.+?)=(.+?)$#D 但是,我想对其进行扩展,使其支持以下示例输入: 一些文本=更多的文本;某物 一些文本=更多的文本;某物某物 一些文本=更多的文本;某物某物某物 从上面的示例可以看出,输入分号;字符被用作分隔符,用于在文本之间分隔文本 我想我可以使用下面的正则表达式模式-它只在有一个正则表达式的情况下有效,但如果有更多的文本被分号分隔,它就不起作用了。。。我知道我可能可以添加类似[;]*的内容,但我希望验证严格,以确保它采用那种格式,这

我有以下正则表达式模式,可以很好地工作:

#^(.+?)=(.+?)$#D
但是,我想对其进行扩展,使其支持以下示例输入:

一些文本=更多的文本;某物

一些文本=更多的文本;某物某物

一些文本=更多的文本;某物某物某物

从上面的示例可以看出,输入分号;字符被用作分隔符,用于在文本之间分隔文本

我想我可以使用下面的正则表达式模式-它只在有一个正则表达式的情况下有效,但如果有更多的文本被分号分隔,它就不起作用了。。。我知道我可能可以添加类似[;]*的内容,但我希望验证严格,以确保它采用那种格式,这样就不能在文本之间的任何地方添加分号

#^(.+?)=(.+?);(.+?)$#D
如果有帮助的话,我目前正在使用PHP的preg_match函数,以便可以以数组形式使用匹配

我不局限于使用正则表达式,因为这是我能想到的唯一方法,因此我欢迎使用其他方法或任何可以与此同时使用的方法,只要结果可以作为数组LOL轻松获得

另外,我想指出,在写这篇文章和浏览标签系统时,我看到了一条新闻快讯……也许使用带有PCRE递归功能的preg_match_all是一个可能的解决方案


感谢所有回复并感谢您的帮助。

您可以尝试以下正则表达式:

#^(.+?)=((.+?)(;)?)+$#D

您可以尝试以下正则表达式:

#^(.+?)=((.+?)(;)?)+$#D
为什么不在下半部分使用explode在任何分号上爆炸?

为什么不在下半部分使用explode在任何分号上爆炸?

尝试:

^.+?=.+?;.+?+$D

试试:

^.+?=.+?;.+?+$我想试试:

#^(.+?)=(.+?)(?:;(.+?))+?$#D
我会尝试:

#^(.+?)=(.+?)(?:;(.+?))+?$#D

嗯,没有想到,但这能确保正确的形式吗?谢谢,我使用了explode和array\u map'trim'、$arr和array\u filter的组合来删除无效条目。嗯,没有想到,但这能确保正确的形式吗?谢谢,我使用了explode和array\u map'trim'的组合,$arr和array_筛选器以清除无效条目。如果未及时正常工作,则生成的匹配项不是预期的。如果未及时正常工作,则生成的匹配项不是预期的。