Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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
记事本和x2B之间反斜杠的差异+;和PHP_Php_Regex_Notepad++ - Fatal编程技术网

记事本和x2B之间反斜杠的差异+;和PHP

记事本和x2B之间反斜杠的差异+;和PHP,php,regex,notepad++,Php,Regex,Notepad++,编辑:我找到了一个意想不到的解决方案。见下文 通过PHP的preg_match_all使用regex,我希望以json格式的字符串匹配某个url(编辑:已经转义)。搜索在Notepad++(当然使用正则表达式匹配)中运行得非常好,但是preg\u match\u all()只返回一个空数组 在上进行测试时,我发现我通常的反斜杠转义方法会产生一个模式错误,即即使是简单的模式https:\\也会返回一个空结果 我完全糊涂了,并且已经尝试调试太久了,所以我可能会错过显而易见的东西。也许你们中的一个能看

编辑:我找到了一个意想不到的解决方案。见下文

通过PHP的preg_match_all使用regex,我希望以json格式的字符串匹配某个url(编辑:已经转义)。搜索在Notepad++(当然使用正则表达式匹配)中运行得非常好,但是
preg\u match\u all()
只返回一个空数组

在上进行测试时,我发现我通常的反斜杠转义方法会产生一个模式错误,即即使是简单的模式
https:\\
也会返回一个空结果

我完全糊涂了,并且已经尝试调试太久了,所以我可能会错过显而易见的东西。也许你们中的一个能看到简单的错误

模式(在Notepad++中可以正常工作,但在PHP中不能):


%(https:\/\/play.spotify.com\\/track\\/)(.*?(\”)%
在PHP中不需要转义斜杠
%(https://play.spotify.com/track/)(.*)(\”)%


只有当您也是双引号时,才需要双引号前的反斜杠。

找到了解决我问题的方法

根据,我需要将每个反斜杠与
\\\\\
匹配。可怕,但却是真的

所以我的模式是:

$pattern=“%”(https:\\\/\\\\\/play\.spotify\.com\\\\/track\\\\\/)(.*?(\”)”%;


请注意,我试图在一个字符串中找到一个模式,该模式不包含清晰的URL,但URL包含转义字符(这是spotify的json输出)

首先,正则表达式有不同的“风格”(这在所有文档中都提到过)第二,转义的方式取决于如何定义字符串。这通常是问题所在,而不是正则表达式引擎本身。在定义字符串后检查字符串中包含的内容。@arkascha:注意notepad++使用与PHP相同的正则表达式风格。@CasimiretHippolyte啊,好的。我不知道那个应用程序,它只是一个一般性的注释。但没有告诉你自己,PHP使用不同的正则表达式风格是因为有不同的引擎。
preg…
函数使用单一风格。:-@fridde:Escaping是不需要的,因为分隔符是
%
,而不是通常的
/
,实际上我的问题有点让人困惑:我在字符串中寻找一个模式E类似于url,但编码为JSON,即已包含转义字符。