Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.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/4/regex/16.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
是否有将POSIX转换为PHP的PCRE的实用程序?_Php_Regex_Posix_Utilities_Pcre - Fatal编程技术网

是否有将POSIX转换为PHP的PCRE的实用程序?

是否有将POSIX转换为PHP的PCRE的实用程序?,php,regex,posix,utilities,pcre,Php,Regex,Posix,Utilities,Pcre,是否有将POSIX转换为PHP的PCRE的实用程序?我对PCRE上的PHP手册有些困惑,虽然我将尝试查找有关PCRE的更多信息,但我想知道是否有人设计了这样一个实用程序 或者,如果有人解释如何转换以下内容,也可以: ereg("^#[01-9A-F]{6}$", $sColor) 但是请解释它是如何完成的,而不仅仅是告诉我转换过程。顺便说一句,PHP同时支持PCRE和POSIX正则表达式。这是PHP手册中关于POSIX正则表达式的部分,因此您不必转换它们:preg\u match(“/^[01

是否有将POSIX转换为PHP的PCRE的实用程序?我对PCRE上的PHP手册有些困惑,虽然我将尝试查找有关PCRE的更多信息,但我想知道是否有人设计了这样一个实用程序

或者,如果有人解释如何转换以下内容,也可以:

ereg("^#[01-9A-F]{6}$", $sColor)

但是请解释它是如何完成的,而不仅仅是告诉我转换过程。

顺便说一句,PHP同时支持PCRE和POSIX正则表达式。这是PHP手册中关于POSIX正则表达式的部分,因此您不必转换它们:

preg\u match(“/^[01-9A-F]{6}$/”,$sColor)
,在这种情况下,您只需要添加两个分隔符

在perl中,您可以编写类似以下内容(s=~/x.+y/) if ( s =~ /x.+y/ ) { print "match"; }
{print“match”}
如您所见,实际的正则表达式封装在//。如果要在正则表达式上设置一个选项,请将其放在第二个/(默认情况下将表达式切换为ungreedy)/x.+y/U
pcre现在模拟这种行为。虽然必须调用函数,但也必须提供分隔符并在第二个分隔符之后设置选项。在perl中,分隔符必须是/,使用pcre,您可以选择更自由的preg_匹配(“/^ 35;[01-9A-F]{6}$/”,$sColor) preg_match("/^#[01-9A-F]{6}$/", $sColor) preg_match("!^#[01-9A-F]{6}$!", $sColor) preg_match("#^\#[01-9A-F]{6}$#", $sColor) // need to escape the # within the expression here preg_match("^#[01-9A-F]{6}$", $sColor) preg#u match(“!^#[01-9A-F]{6}$!”,$sColor) preg#u match(“#^\#[01-9A-F]{6}$#”,$sColor)//需要在这里的表达式中转义# preg#u match(“^[01-9A-F]{6}$”,$sColor)与pcre一样,最好选择一个不出现在表达式中的字符。

preg#u match(/^[01-9A-F]{6}$/D“,$sColor)

请注意。人们总是忘记它。没有它,
$
将允许最后一个换行符。类似“#000000\n”的字符串将传递。这是POSIX和PCRE之间的细微差别


当然,
[01-9]
可以重写为
[0-9]

我知道这一点。然而,在PHP5.3中,POSIX将被弃用,所以我希望所有的东西都是最新的。这个答案已经过时了,你能更新它吗
ereg()
现在不推荐了。如果你写01-9,为什么不写0-9? preg_match("/^#[01-9A-F]{6}$/", $sColor) preg_match("!^#[01-9A-F]{6}$!", $sColor) preg_match("#^\#[01-9A-F]{6}$#", $sColor) // need to escape the # within the expression here preg_match("^#[01-9A-F]{6}$", $sColor)