gpt4 book ai didi

php - 为什么 PHP preg_* 函数需要正则表达式分隔符?

转载 作者:行者123 更新时间:2023-12-01 23:25:06 26 4
gpt4 key购买 nike

关闭。这个问题需要details or clarity .它目前不接受答案。












想改进这个问题?通过 editing this post 添加详细信息并澄清问题.

8年前关闭。




Improve this question




这让我很烦:

为什么preg_match('/pattern/', $haystack)而不是 preg_match('pattern', $haystack) ?我所看到的一切都只是说明它们是必要的,并提到您可以使用备用分隔符。

但是,它是一个在字符串之外定义自己的接口(interface)的函数。它有一个标志参数。添加字符串内语法似乎是反复无常的。

是不是作者对解决 pcre 不感兴趣? PHP 的另一个反常事实?或者有什么理由吗?

最佳答案

分隔符是为了与 Perl 兼容。 Perl 正则表达式使用分隔符,并依靠结束分隔符来表示开始 of modifier flags ,如 i例如,不区分大小写。

// Match alpha-numeric, case insensitive, multiline
preg_match('/^[a-z0-9]+$/im', $input);
preg_match() 的可选标志参数没有实现像 i 这样的正则表达式标志在第二个分隔符之后。它们具有不同的功能,实际上是 PREG_OFFSET_CAPTURE是那里唯一可用的标志。这并不是说正则表达式标志不能作为另一个函数参数实现。他们当然可以,但 Perl 兼容性是这里的目标。

PHP 并不是唯一直接从 Perl 借用来实现正则表达式的语言。 JavaScript 在某种程度上做到了,Ruby 甚至实现了 Perl 的 =~正则表达式匹配的运算符。

关于php - 为什么 PHP preg_* 函数需要正则表达式分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9550899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com