php代码无法运行xampp

php代码无法运行xampp,php,regex,Php,Regex,我正在用regex做一些事情,但是下面的代码不知怎么在我的计算机上不起作用。我正在使用XAMPP包。然而,当我在这个网站上检查我的php代码时,它正在工作。为什么会这样 <?php $single="<div id='quote'> </br><input onclick='this.select();' id='selectable' value='User '></br><div class='content'> ^^^^^

我正在用regex做一些事情,但是下面的代码不知怎么在我的计算机上不起作用。我正在使用XAMPP包。然而,当我在这个网站上检查我的php代码时,它正在工作。为什么会这样

<?php
$single="<div id='quote'>

</br><input onclick='this.select();' id='selectable' value='User
'></br><div class='content'>
^^^^^ MILAN TODAY ^^^^^



4
-4-
4444
44444
444444
4444444
44444444
444444444
*3333333333*
444444444
44444444
4444444
444444
44444
4444
444
44
4
*
# 670 # ((( 30 ))) # 370 #

# 789 # ((( 40 ))) # 370 #

***gl***
</br></div></div>";

if (preg_match('/(\R4{3,4}\D44\D)/', $single, $double)) {
        echo "working";
}

?>

在Windows中,换行符表示两个字符:换行符后的回车:
CR
+
LF
。在使用基于模式的实用程序时,这两个字符几乎有一种表示方式
\r\n
。但类Unix系统代表一个换行符:
LF

在Linux上的主机上运行脚本时,正则表达式
\R4{3,4}\D44\D
可以工作,因为
\D
能够匹配换行符
\n
\x0A
)并立即匹配
44

                                             Here
                                           _________
                                          |         |
  4    4    4    4    .    4    4    4    .    4    4
  ^    ^    ^    ^    ^    ^    ^    ^    ^    ^    ^
\x04 \x04 \x04 \x04 \x0A \x04 \x04 \x04 \x0A \x04 \x04
但在Windows中,情况略有不同<代码>\D
CR
\x0D
)匹配,但后面的
LF
\x0A
)永远不会匹配,因为您的引擎会立即查找
44
。所以整个模式都失败了

                                                     Here
                                                ______________
                                               |              |
  4    4    4    4    .    .    4    4    4    .    .    4    4
  ^    ^    ^    ^    ^    ^    ^    ^    ^    ^    ^    ^    ^
\x04 \x04 \x04 \x04 \x0D \x0A \x04 \x04 \x04 \x0D \x0A \x04 \x04
这么说来,我相信347是Linux主机上
strlen()
的输出,379来自您的Windows主机。一个基本的数学结果是一个与输入字符串中新行数相同的数字:

379 - 347 =  32 // CR characters in Windows OS
但是,如果您将正则表达式更改为
\R4{3,4}\D{1,2}44\D
,您将看到它是有效的,或者如果您只是指换行符,您应该将它更改为:

\R4{3,4}\R44\R

\R
匹配任何类型的换行符(即
CR
+
LF
LF
CR
,…)

在Windows中,换行符表示两个字符:换行符后的回车:
CR
+
LF
。在使用基于模式的实用程序时,这两个字符几乎有一种表示方式
\r\n
。但类Unix系统代表一个换行符:
LF

在Linux上的主机上运行脚本时,正则表达式
\R4{3,4}\D44\D
可以工作,因为
\D
能够匹配换行符
\n
\x0A
)并立即匹配
44

                                             Here
                                           _________
                                          |         |
  4    4    4    4    .    4    4    4    .    4    4
  ^    ^    ^    ^    ^    ^    ^    ^    ^    ^    ^
\x04 \x04 \x04 \x04 \x0A \x04 \x04 \x04 \x0A \x04 \x04
但在Windows中,情况略有不同<代码>\D与
CR
\x0D
)匹配,但后面的
LF
\x0A
)永远不会匹配,因为您的引擎会立即查找
44
。所以整个模式都失败了

                                                     Here
                                                ______________
                                               |              |
  4    4    4    4    .    .    4    4    4    .    .    4    4
  ^    ^    ^    ^    ^    ^    ^    ^    ^    ^    ^    ^    ^
\x04 \x04 \x04 \x04 \x0D \x0A \x04 \x04 \x04 \x0D \x0A \x04 \x04
这么说来,我相信347是Linux主机上
strlen()
的输出,379来自您的Windows主机。一个基本的数学结果是一个与输入字符串中新行数相同的数字:

379 - 347 =  32 // CR characters in Windows OS
但是,如果您将正则表达式更改为
\R4{3,4}\D{1,2}44\D
,您将看到它是有效的,或者如果您只是指换行符,您应该将它更改为:

\R4{3,4}\R44\R

\R
匹配任何类型的新词(即
CR
+
LF
LF
CR
,…)

你说的“不起作用”是什么意思?我猜代码需要很长的咖啡休息时间,只是靠在铲子上,和耙子聊天等等。。。听起来像是一个糟糕的员工,应该被解雇。如果它在工作,它应该回音工作,但它不这样做。可能是因为你运行的东西不同于你的网站正在运行。PHP可能是一个不同的版本或配置不同。请你做一个
echo strlen($single)在本地环境和主机中都可以工作?你说的“不工作”是什么意思?我猜代码需要很长的休息时间,只是靠在铲子上,和耙子聊天等等。。。听起来像是一个糟糕的员工,应该被解雇。如果它在工作,它应该回音工作,但它不这样做。可能是因为你运行的东西不同于你的网站正在运行。PHP可能是一个不同的版本或配置不同。请你做一个
echo strlen($single)
在本地环境和主机中都可以使用?非常感谢。这对我很有用,我对regex有了更多的了解谢谢。这对我很有用,我对regex有了更多的了解