正在尝试在preg_Match中查找正斜杠

2022-03-29 00:00:00 php preg-match

我已经找了几个小时,试图找到这个问题的解决方案。我正在尝试确定请求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 '['

编辑: 我想我应该声明请求URI已经知道。我正在试着证明整个字符串,以确保它不是假字符串,即确保第一组只有小写字母,第二组只有11个数字。


解决方案

/不是唯一可以用作分隔符的内容。事实上,您几乎可以使用任何非斯拉夫数字字符。就我个人而言,我喜欢使用(),因为它提醒我结果数组的第一项是整个匹配,而且它在模式中也永远不需要转义。

preg_match("(^/([a-z]+)/(d+)$)i",$samplerequesturi,$out);
var_dump($out);

应该可以了。

相关文章