Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 preg_分割_Php_Regex_Preg Split - Fatal编程技术网

带有特殊字符的php preg_分割

带有特殊字符的php preg_分割,php,regex,preg-split,Php,Regex,Preg Split,为什么最后一个不起作用?“@with/for”构建php正则表达式的具体区别是什么 thx用于澄清最后一个在我的机器上运行良好(PHP 5.3.10,但应该在任何地方都可以运行): thebod@dockmaster:~/Sites$php 基本上,@和/之间没有区别,因为您可以使用任何特殊字符进行预匹配。只需注意以您使用的相同字符开始和结束您正在使用的工具已损坏。 如果将默认代码更改为 thebod@dockmaster:~/Sites$ php <?php $tags = preg_s

为什么最后一个不起作用?“@with/for”构建php正则表达式的具体区别是什么


thx用于澄清

最后一个在我的机器上运行良好(PHP 5.3.10,但应该在任何地方都可以运行):

thebod@dockmaster:~/Sites$php

基本上,@和/之间没有区别,因为您可以使用任何特殊字符进行预匹配。只需注意以您使用的相同字符开始和结束

您正在使用的工具已损坏。 如果将默认代码更改为

thebod@dockmaster:~/Sites$ php
<?php
$tags = preg_split('/\//', '1/2//3', NULL, PREG_SPLIT_NO_EMPTY);
print_r($tags);
/////////////////
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
它应该输出
Hello\World
,而不是像它那样输出
Hello World

这解释了
'/\/'
中断的原因:此工具将其视为
'//'
,它不是有效的正则表达式。双反斜杠的解释是正确的:
'/\\/'
可以工作(但这是因为PHP“看到”
'/\/'
,这相当于
'/\\/'

再检查一次:

echo 'Hello\ World';

应打印
34
。在它上面打印的
3 3 4

应该也适用于PHP5.0,最好在您自己的机器上检查这些代码,这些在线工具总是有很多限制(可能还有反斜杠问题),因为没有理由说明
'@/'
'/\/'
应该不同,您能告诉我们您的php版本吗?好的(根据您对董事会的回复),所以问题不在于PHP,而在于您正在使用的网站,请参阅我的答案了解任何好的在线PHP脚本测试仪?无论您在此类网站上能做什么,您都可以在命令行上做得更好。Google命令行PHP。如果您需要HTML输出,共享托管解决方案最适合您。从
PHP filename.PHP
echo 'Hello\ World';
echo strlen('///'), ' ', strlen('/\//'), ' ', strlen('/\\//');