提取以开头和结尾的字符串

时间:2017-05-18 07:04:48

标签: php regex

我想从

下面的示例字符串中提取以下字符串<%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%>'
}

Link to PHP example

2 个答案:

答案 0 :(得分:1)

由于您使用preg_match_all(),因此您将始终获得二维数组。这至少会为您提供您想要的内容:

/<%MYSTRING\d+%>/

https://regex101.com/r/abVAkC/1

http://ideone.com/I8VRoV

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);

Demo