我想从
下面的示例字符串中提取以下字符串<%MYSTRING123%>
'sdfsdf sdfsdf fd<%MYSTRING123%>d12df fsdsgsg d'
我发现这个问题已经被确认question,所以我尝试了他们的解决方案如下:
$input = 'sdfsdf sdfsdf fd<%MYSTRING123%>d12df fsdsgsg d';
preg_match_all('/\[<%MYSTRING\](.*?)\[%>\]/', $input, $matches);
var_dump($matches);
输出
array(2) {
[0]=>
array(0) {
}
[1]=>
array(0) {
}
}
预期输出
array(1) {
[0]=> '<%MYSTRING123%>'
}
答案 0 :(得分:1)
由于您使用preg_match_all()
,因此您将始终获得二维数组。这至少会为您提供您想要的内容:
/<%MYSTRING\d+%>/
https://regex101.com/r/abVAkC/1
PS:您关联的主题中的\[
和\]
是其输入的一部分(&#39; BBCode&#39; -tags)。所以这些不适用于您的输入。
答案 1 :(得分:0)
期待您的正则表达式,您似乎需要能够获得<%MYSTRING-anynumber%>
,对吗?
尝试改变你的正则表达式:
<?php
$input = 'sdfsdf sdfsdf fd<%MYSTRING123%>d12df fsdsgsg d';
preg_match_all('/\<%MYSTRING.*?%>/', $input, $matches);
var_dump($matches);