Php 抓取字符串的特定部分

Php 抓取字符串的特定部分,php,string,Php,String,我试图获取字符串的一个特定部分,它有一个开始字符和一个结束字符 比如, $str = "Lorem ipsum |example xyz|dolor sit amet, consectetur adipiscing elit |example|. Vivamus at posuere magna. Suspendisse rutrum rhoncus leo vitae vehicula. Nunc nec dapibus nisi. Donec facilisis mauris sapien,

我试图获取字符串的一个特定部分,它有一个开始字符和一个结束字符

比如,

$str = "Lorem ipsum |example xyz|dolor sit amet, consectetur adipiscing
elit |example|. Vivamus at posuere magna. Suspendisse rutrum rhoncus leo
vitae vehicula. Nunc nec dapibus nisi. Donec facilisis mauris sapien, eget
blandit enim |example xyz| dignissim auctor.|example| Nullam a porta orci.
Donec pharetra urna odio, ut pellentesque est eleifend vel. Nulla tincidunt
tellus sed dui fermentum viverra. Vivamus sit amet semper mi."
我要抓取所有零件|示例xyz |。。布拉布拉|例如|

我该怎么做? 谢谢

function stringcutout($string,$start,$stop)
{
 $ret='';
 if (strstr($string,$start))
 {
  $p=strpos($string,$start);
  $b=substr($string,$p+strlen($start));
  if (strstr($b,$stop))
  {
   $p=strpos($b,$stop);
   $b=substr($b,0,$p);
   $ret=$b;
  }
 }
 return $ret;
}
我在用这个。我知道这不太好,但正在工作…

使用正则表达式\|[\w\s]+\\\\\,以获取任何单词|

更新

要包含|示例xyz |和|示例|请使用此正则表达式:

(\|example xyz\|[\w\s]\|example\|)

如果你有一个固定的字符串,你正在寻找,你可以使用


好的,所以你需要一个不同的函数。。。 您可以获取多个内容,包括以|开头的任何内容,例如使用此函数:

$return=array(); 
$ex=explode('|example',$str);
if (sizeof($ex)>0) {unset($ex[0]); foreach ($ex as $s) {$x=strpos($s,'|'); $return[]=substr($s,$x+1);}}

如果您不希望额外的最后一个结果不以| example结尾,您可以将其取消设置…

您尝试了什么,预期结果是一个匹配数组还是第一个匹配?您可以在|上分解,并丢弃结果中的奇数键,因为它们始终包含example或example xyz..请注意,此函数只查找字符串的第一次出现。不,我认为这很好,但我希望得到一个数组,其中包含| example xyz |的全部部分。。布拉布拉|例如|。在函数中,我的结果返回一个空字符串。$start='|示例xyz |'$停止=“|示例|”$ret=stringcutout$str、$start、$stop;打印$ret;这对我来说是一个回报:多洛·西特·阿梅特,康塞特图·阿迪皮斯,我想他想要管道之外的部分。实际上,我想要整个部分。整个|示例xyz |。。布拉布拉|示例|它总是返回空数组。那么,您能告诉我如何使用preg|u match吗?检查我的新编辑,应该给您|示例xyz |文本|示例|以$matches为单位
$return=array(); 
$ex=explode('|example',$str);
if (sizeof($ex)>0) {unset($ex[0]); foreach ($ex as $s) {$x=strpos($s,'|'); $return[]=substr($s,$x+1);}}