实际上,我正在搜索一个字符串,查找遵循“@text@”模式的特定标记,并希望将该字符串中的标记检索到一个新数组中:
我的地址是“地址”,我家在“街”,电话号码是“号码”。
我想要这个句子中的记号作为数组:
array[0] = @@address@@
array[1] = @@street@@
array[2] = @@number@@
$input = 'my address is @@address@@ and my house is at @@street@@ and the number is @@number@@ or so ';
preg_match('/@@[^a-z]@@/', $input, $output);
echo $output[0];
echo $output[1];
实际上,我的所有标记都被两个@@包围,但是这些标记在字符和项的数量上可能有所不同。任何想法
发布于 2022-03-23 16:17:04
使用preg_match_all()
获取所有匹配。preg_match()
只返回第一次匹配。
你的规则是错的。[^a-z]
匹配除字母以外的所有内容,但您希望匹配字母。您需要+
量词来匹配多个。
preg_match_all('/@@[a-z]+@@/', $input, $matches);
$output = $matches[0];
var_dump($output);
https://stackoverflow.com/questions/71590428
复制相似问题