如何从大文本中获取部分文本

时间:2014-07-25 19:49:59

标签: php string

有没有办法从php中的array index获取一小部分数据? 例如,我有一组数据,如:

  

阵列(

     

[title] =>我的头衔

     

[描述] => Lorem Ipsum只是印刷和排版行业的虚拟文本。自16世纪以来,Lorem Ipsum一直是业界标准的虚拟文本,当时一台未知的打印机采用了类型的厨房      代码:无需促销代码      开始时间:2014-07-25 00:00:00       到期日:0000-00-00 00:00:00

     

[link] => http://google.com         )

从上面的数组的描述索引,我需要只包含

的部分
  

代码:不需要促销代码   开始时间:2014-07-25 00:00:00   到期日:0000-00-00 00:00:00

无论文本数据中哪个部分出现这种情况。

3 个答案:

答案 0 :(得分:2)

$myArray = array(
    "title" => "My Title",
    "description" => "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type
Code: No Promo Code Required Begin: 2014-07-25 00:00:00 Expire: 0000-00-00 00:00:00",
    "link" => "http://www.gopjn.com/t/3-79115-101746-99698"
    );

preg_match("/(Code.*Expire:\s\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})/", $myArray["description"], $matches);

echo $matches[1];

DEMO

如果您想要匹配的字符串实例不止一个,并且想要获得所有这些实例,请改用preg_match_all()

答案 1 :(得分:1)

它可能不是最直接也不是最好的方式(正则表达可能是一个更好的主意)。但有一种方法可以做到:

$foo = explode('Code:', $myarray['description'], 1);
echo array_pop($foo);

或者也许:

$p = stripos($myarray['description'], 'Code:');
$foo = substr($myarray['description'], $p);
echo $foo; 

答案 2 :(得分:0)

你可以使用 mb_substr()

echo mb_substr($myArray['description'], 0 /* 即缩进*/, 30 /即要显示的元素数/, 'utf-8 ' /编码类型/);