如何检查变量是否具有语法以及如何将其拆分为数组?

我的数据库字段中有以下字符串“L{id_extern}S{LocationId}”。


此字符串是输入字段的可接受语法。


在这个例子中只有输入应该接受满足“ L something S something”


例如


<input name="myinput" value="12345"> - is not correct

<input name="myinput" value="L12345"> - is not correct

<input name="myinput" value="L123S45"> - is correct

我必须将值 (12345) 与语法字符串进行比较。


“{...}”之间的部分可以有无限的(最少需要 1 个)数字和字母。


首先,我需要拆分语法字符串并使其在多维数组中可用,例如


$myArray['placeholder1']=id_extern;

$myArray['placeholder2']=LocationId;

我如何将字符串拆分成这种数组的一种?


我如何将输入字段的值与我想要的语法 L{id_extern}S{LocationId} 进行比较?我认为 pregmatch 可以提供帮助,但我不知道它是如何工作的。


慕田峪7331174
浏览 87回答 1
1回答

慕斯王

您可以执行preg_match_all(),其中使用以下正则表达式需要至少 1 个(但可能有多个)字符,它是字母 az 或 AZ 或介于 0-9 之间和L之后S的数字S就像是:<?php$strings = ['12345', 'L12345', 'L1S1', 'LS1',  'L123S45', 'L1x23S4yZY5', 'L1x!23S4y5'];foreach($strings as $string) {    $hasMatches = preg_match_all('/^L([0-9a-zA-Z]+)S([0-9a-zA-Z]+)/m', $string, $matches, PREG_SET_ORDER, 0);    if(filter_var($hasMatches, FILTER_VALIDATE_BOOLEAN)) { // converts $hasMatches to boolean        echo 'THERE IS A MATCH: "' . $matches[0][0] . '"' . "\n";        echo '1st part: ' . $matches[0][1] . "\n";        echo '2nd part: ' . $matches[0][2] . "\n\n";    }}上面的输出是:THERE IS A MATCH: "L1S1"1st part: 12nd part: 1THERE IS A MATCH: "L123S45"1st part: 1232nd part: 45THERE IS A MATCH: "L1x23S4yZY5"1st part: 1x232nd part: 4yZY5
打开App,查看更多内容
随时随地看视频慕课网APP