php代码无法运行xampp
我正在用regex做一些事情,但是下面的代码不知怎么在我的计算机上不起作用。我正在使用XAMPP包。然而,当我在这个网站上检查我的php代码时,它正在工作。为什么会这样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'> ^^^^^
<?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有了更多的了解