Php 如何获取标记之间包含特定字符串的文本

Php 如何获取标记之间包含特定字符串的文本,php,preg-match-all,Php,Preg Match All,请帮我解决preg_match,我搞不懂:( 我有很多文本,但我需要捕获包含特定文本的“&”之间的所有内容 范例 "thisip4:isatextexample&ineed.thistext&TXT:&andthis.idontneed&txt:&test.thistext&" 我需要在包含此文本的&之间提取完整的文本 结果应该是:ined.thistext 和:test.thisttext 提前多谢:) 哦,我试过用这个 &([^\\n

请帮我解决preg_match,我搞不懂:(

我有很多文本,但我需要捕获包含特定文本的“&”之间的所有内容

范例

"thisip4:isatextexample&ineed.thistext&TXT:&andthis.idontneed&txt:&test.thistext&"
我需要在包含此文本的&之间提取完整的文本

结果应该是:
ined.thistext
和:
test.thisttext

提前多谢:)

哦,我试过用这个

&([^\\n]*thistext[^\\n]*)&
但这对多个“&”不起作用


W

您的模式包含
[^\n]*
,该模式匹配除换行符以外的任何0+字符,并使正则表达式引擎在任何
&
字符之间贪婪地匹配,并在该行中找到最后一个
&

你可以用

'~&([^&]*?thistext[^&]*)&~'
然后,获取组1的值。看

详细信息

  • &
    -a
    &
    字符
  • ([^&]*?此文本[^&]*)
    -捕获组1:
    • [^&]*?
      -除
      &
      以外的任何0+字符,尽可能少
    • 此文本
      -文字文本
    • [^&]*
      -除
      &
      以外的任何0+字符,尽可能多
  • &
    -a
    &
    字符
:


我试过一堆,一个很接近的是“&([^\\n]*thistext[^\\n]*)&”,因此,正确的标记不是
preg match
,而是
preg match all
。请重新标记并添加
regex
php
谢谢大家:)但是如果在和之间有更多的“thistext”实例呢?我需要抓住他们all@user1973842显示具有预期匹配项的示例字符串。“thisip4:isatextexample&ined.thistext&TXT:&和this.idontneed&TXT:&test.thistext&“@user1973842这里太晚了,我有点慢
preg\u match\u all
将完成此工作。
$str = 'thisip4:isatextexample&ineed.thistext&TXT:&andthis.idontneed&txt:&test.thistext&';
if (preg_match_all('~&([^&]*?thistext[^&]*)&~', $str, $m)) {
    print_r($m[1]);
}
// => Array ( [0] => ineed.thistext [1] => test.thistext )