抓住字符串的特定部分

时间:2014-11-03 09:15:07

标签: 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, 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."

我想要抓取所有|example xyz| .. blabla.. |example|部分。

我该怎么做? 谢谢..

4 个答案:

答案 0 :(得分:0)

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

我正在使用它。我知道它不漂亮,但工作......

答案 1 :(得分:0)

使用正则表达式\|([\w\s]+)\|获取|

之间的任何字词

<强>更新

要包含|example xyz||example|,请使用此正则表达式:

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

答案 2 :(得分:0)

如果您有固定的字符串,您可以使用preg_match查找。

preg_match_all('/\|example xyz\|[\w\s\,\.]+\|example\|/', $str, $matches);
if (count($matches) > 0)
{
    foreach ($matches[0] as $match)
    {
        echo $match;
    }
}

答案 3 :(得分:0)

好的,所以你需要一个不同的功能...... 您可以获得多个内容,包括以|使用此函数开头的所有内容:

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

如果您不想要额外的最后结果(不是&#34;终止&#34;通过|示例),您可以取消设置...