我已经搜索了几个小时试图找到解决方案。我正在尝试确定 REQUEST URI 是否合法,并从那里对其进行分解。
$samplerequesturi = "/variable/12345678910";
要确定它是否合法,第一部分variable
仅是字母并且长度可变。第二部分是数字,总共应该有11个。我的问题是转义正斜杠,以便它在 uri 中匹配。我试过了:
preg_match("/^[\/]{1}[a-z][\/]{1}[0-9]{11}+$/", $samplerequesturi)
preg_match("/^[\\/]{1}[a-z][\\/]{1}[0-9]{11}+$/", $samplerequesturi)
preg_match("/^#/#{1}[a-z]#/#{1}[0-9]{11}+$/", $samplerequesturi)
preg_match("/^|/|{1}[a-z]|/|{1}[0-9]{11}+$/", $samplerequesturi)
其中还有一些我现在不记得了。
请求通常会出错:
preg_match(): Unknown modifier '|'
preg_match(): Unknown modifier '#'
preg_match(): Unknown modifier '['
编辑:
我想我应该声明 REQUEST URI 是已知的。我试图证明整个字符串,以确保它不是伪造的字符串,即确保第一组仅是小写字母,第二组仅是 11 个数字。
/
不是唯一可以用作分隔符的东西。事实上,您几乎可以使用任何非字母数字字符。我个人喜欢使用()
因为它提醒我结果数组的第一项是整个匹配,并且它也不需要在模式中转义。
preg_match("(^/([a-z]+)/(\d+)$)i",$samplerequesturi,$out);
var_dump($out);
应该可以做到这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)