我们在数据库(Laravel 5.4站点)中有一个字段,其中的单元格包含如下数据:
"123(Description of 123) 124(Description of 124) 125(Description of 125)"
所有在一个长串。我需要输出括号内的文本,但只输出指定的数字。例如,将数字123作为参数传递,并返回123的描述。
我有与preg_match一起使用的正则表达式模式,它从括号中提取数据:
$sTest = "247(text goes here)248(more here)";
preg_match("/\(([^\)]*)\)/", $sTest, $aMatches);
$sResult = $aMatches[1];
但我不知道如何指示PHP在特定数字后读取特定括号。
有人有什么建议吗? 非常感谢提前!
答案 0 :(得分:0)
虽然重新设计数据库可能看起来像一个修复,但目前的解决方法是将带括号的数据的ID作为正则表达式模式的一部分传递。
考虑this snippet:
$id = 248;
$sTest = "247(text goes here)248(more here)";
preg_match("/\b" . $id . "\(([^\)]*)\)/", $sTest, $aMatches);
$sResult = $aMatches[1];
echo $sResult;
此处,\b
是一个字词边界,用于将数字与整个单词匹配(以便与1
中的21
不匹配)$id
成为pattern(但由于您只使用$aMatches[1]
获取第一个捕获组的内容,因此它仅用作上下文,而不是提取的一部分。)