Php 从大型内容中抓取文本

Php 从大型内容中抓取文本,php,Php,我需要抓取一个文本,该文本包含在分配给变量字符串的引号中。内容将是这样的 激发和回忆他从博士和他的朋友那里学到的技巧, 麦奎因很快出现,带领比赛进入最后一圈。希克斯, 拒绝失败,会使韦瑟斯陷入危险事故。看到 回忆起博士的命运,麦昆在离终点不远的地方停了下来 排队,让希克斯获胜,然后开车回去把韦瑟斯推过马路 终点线。群众和媒体谴责希克斯的胜利 string=“Mickey”并赞扬麦昆的体育精神。虽然 麦奎因拒绝了迪诺科赞助协议,坚持 与目前的赞助商呆在一起,以感谢他们的过去 支持 我需要从整个内容

我需要抓取一个文本,该文本包含在分配给变量
字符串
引号中。内容将是这样的

激发和回忆他从博士和他的朋友那里学到的技巧, 麦奎因很快出现,带领比赛进入最后一圈。希克斯, 拒绝失败,会使韦瑟斯陷入危险事故。看到 回忆起博士的命运,麦昆在离终点不远的地方停了下来 排队,让希克斯获胜,然后开车回去把韦瑟斯推过马路 终点线。群众和媒体谴责希克斯的胜利
string=“Mickey”
并赞扬麦昆的体育精神。虽然 麦奎因拒绝了迪诺科赞助协议,坚持 与目前的赞助商呆在一起,以感谢他们的过去 支持

我需要从整个内容中抓取
Mickey

我在PHP上尝试了
substr
,但没有帮助。有什么想法吗


p.S.引号内的字符串可能会有所不同。

如果字符串中只有一个引号内的单词,最简单的方法是:

$myArr = explode('"',$string); // break the string to array with " as dilimeter
echo $myArr[1]; // echo the second element.
更新:对于许多引号-仅选择
string=
之后的引号:

$myPos = strpos($string,'string="')+8; // get the position of string after 'string="'
$result = substr($string,$myPos,strpos($string,'"',$myPos)-$myPos);

echo $result;
注意:这应该比使用正则表达式更有效-结果:


Yotam:0.014078ms,bkilinc:0.048885ms

我认为preg\u match应该像这样使用

$matches = Array();
preg_match("/string\=\"(.*?)\"/", $content, $matches);

在结尾,$matches[1]应该包含该值。

为什么substr不起作用?显示您的代码。您还应该能够使用正则表达式执行此操作。@Barmar,因为我不知道在哪里截断字符串的长度。请使用
strpos()
查找第二个双引号,并在那里截断。@Barmar,问题是可能还有其他引号。抱歉,引号太多了。但是我只需要得到分配给变量
字符串的内容
请向上投票我的问题,这样我就可以向上投票你的答案,因为我需要15次投票;为什么它比正则表达式更有效?8值是硬编码的,可能会造成维护问题。总的来说,这并不像正则表达式解决方案那样简洁,那么效率在哪里呢?@bkilinc只是因为8的硬编码并不比正则表达式中的
“/string\=\”(.*?\”/“
多。StrpOS在找到匹配时停止查看-PrggMatch-Match-Match-MatchString =“代码”字符串=“某物”<代码>相对在字符串的开始,其余的是非常长的文本(数百万字符),StrpOS将通过它而PrggMatcho会一直寻找匹配直到结束。这类任务不是为preg_match创建的。preg_match()是为匹配字符串模式创建的。这是一个C函数,速度非常快。并产生简洁且可维护的代码。