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


How to get some part of text from a large text

是否有办法从php中获得array index的一小部分数据?
例如,我有一个这样的数据数组:

阵列(

[title] => My title

[description] =>Lorem Ipsum只是印刷排版行业的虚拟文本。自16世纪以来,Lorem Ipsum一直是行业标准的虚拟文本,当时一位不知名的印刷商将一排字体
代码:不需要促销码开始时间:2014-07-25 00:00:00过期时间:0000-00-00 00:00:00

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

从上面数组的描述索引

,我只需要包含

的部分

代码:No Promo Code Required开始时间:2014-07-25 00:00:00过期时间:0000-00-00 00:00:00

无论这部分出现在文本数据中的哪个位置

$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];

演示

如果您想要匹配的字符串可能有多个实例,并且希望获得所有实例,则使用preg_match_all()代替。

这可能不是最直接也不是最好的方法(regex可能是一个更好的主意)。但是有一种方法:

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

或者

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

可以使用mb_substr()

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