Php 纺织品错误:使用url';s导致编译错误
当使用这个简单的纺织物标记时,纺织物类似乎给出了一个编译错误。这似乎发生在以下链接中:Php 纺织品错误:使用url';s导致编译错误,php,regex,textile,Php,Regex,Textile,当使用这个简单的纺织物标记时,纺织物类似乎给出了一个编译错误。这似乎发生在以下链接中: "linktext":http://www.nu.nl ["linktext":http://www.nu.nl] 编译错误: Warning: preg_match() [function.preg-match]: Compilation failed: unrecognized character after (?< at offset 5 in /var/www/vhosts/sturb.nl/
"linktext":http://www.nu.nl
["linktext":http://www.nu.nl]
编译错误:
Warning: preg_match() [function.preg-match]: Compilation failed: unrecognized character after (?< at offset 5 in /var/www/vhosts/sturb.nl/subdomains/bu/httpdocs/lib/textile.php on line 1355
正则表达式中的“#”符号(不在字符类中的符号)可能有问题。他们必须正常逃脱 更新 另外,在php中,除非指定了//x修饰符,否则#被视为一个文本。如果用作文本,则必须对其进行转义 您得到的错误意味着所使用的PHP版本不支持“命名捕获缓冲区”。我不确定php的哪个版本实现了这一点 我查看了您命名的textfile php类,该函数确实存在。我不知道他们是否为您提供php,或者您正在使用自己的php。我不是php专家 在ideone.com上运行我的测试用例使用的PHP版本是5.2.11,它支持命名捕获缓冲区 一种方法是,您可以将命名的构造从
(?-)
转换为(-)
。它应该运行,或者至少让您通过该子表达式
下面是一个有/没有命名捕获缓冲区的测试用例尝试找出正在使用的版本,可能它有一个内置的“version()”函数 这里是一个扩展/收缩的正则表达式,用于测试
'~
^(
([^:/?#]+)
:
)?
(
//
([^/?#]*)
)?
([^?#]*)
(
\?
([^#]*)
)?
(
\#
(.*)
)?
~x';
'~^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?~'
我添加了preg_match函数,它会触发错误,这似乎是另一个问题;扩展的正则表达式不起作用。。。它说:
在(@stUrb中的偏移量73处)之后的未识别字符-我更新了我的答案以包含一个没有命名捕获缓冲区的正则表达式。如果它起作用,你应该更新PHP的版本。大体上,(?
)
是一个正则表达式转义序列分组。下一个字符过去的?
确定它是什么。因此不识别“(?)”,这意味着不支持命名捕获缓冲区。
'~
^(
([^:/?#]+)
:
)?
(
//
([^/?#]*)
)?
([^?#]*)
(
\?
([^#]*)
)?
(
\#
(.*)
)?
~x';
'~^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?~'