PHP / Laravel在特定数字后选择括号中的文本

时间:2017-04-03 10:52:08

标签: php regex text

我们在数据库(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在特定数字后读取特定括号。

有人有什么建议吗? 非常感谢提前!

1 个答案:

答案 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]获取第一个捕获组的内容,因此它仅用作上下文,而不是提取的一部分。)