2012-03-06 40 views
-2

我有一个变量$结果,其中获取的网页内容使用curl存储。我想搜索该变量或网页,并找到某个字符串说x,然后将下一个5行存储在一个新的变量。从PHP中的变量中获取字符串?

我可以在PHP中做到吗?

在此先感谢.......

+2

'我可以用PHP吗?'是的,你可以! – Sarfraz 2012-03-06 16:38:06

+0

在字符串中搜索字符串很简单 - 例如 - ['strpos()'](http://uk3.php.net/manual/en/function.strpos.php) - 但这里的难点在于你如何定义'下5行'。如果你使用'fetched webpage contents',那么[DOM解析器](http://uk3.php.net/manual/en/book.dom.php)可能是更好的选择... – DaveRandom 2012-03-06 16:39:30

+1

当然可以!向我们展示您的第一次尝试,然后我们会告诉您如何改进您的代码。 – ghoti 2012-03-06 16:39:55

回答

1

你可以尝试找到strpos位置

$findme = 'x'; 
$pos = strpos($result, $findme); 

然后substr结果(不确定有关linebreakes)。

或者使用正则表达式

看一看这里:

http://php.net/manual/en/function.strpos.php http://php.net/manual/en/function.substr.php http://php.net/manual/en/function.preg-match.php

+0

tonymarschall,我已经试过了,我差不多完成了。现在主要的问题是我有要取出的字符串的起点,但由于要取出的字符串具有动态长度,但字符串结束后的内容每次都是相同的。那么我应该怎么做呢? – kanwarpal 2012-03-07 14:41:30

+0

如果字符串结尾已定义,请尝试获取字符串结尾的起始位置。然后添加strlength并将其与substr一起使用。 – tonymarschall 2012-03-07 15:07:56

1

您可以使用strpos()来在$ resulst中找到x的位置。

你可以从那个位置开始,在$ result('\ n')中查找接下来的5个换行符,然后构建一个新的字符串。

这应该工作。请先尝试一下。如果您遇到问题,请发布错误信息,我们可以为您提供帮助。

+0

约翰内斯,我试过了,我差不多完成了。现在主要的问题是我有要取出的字符串的起点,但由于要取出的字符串具有动态长度,但字符串结束后的内容每次都是相同的。那么我应该怎么做呢? – kanwarpal 2012-03-07 14:40:49

0

我想你的问题改变了,现在你正在寻找两个固定字符(或字符串)之间的字符串。

<?php 
$webpage_content = "Here 
is 
some text... 
#000001 This is an Error code! 
It can have multiple lines! 
!content 
This is normal content"; 


$start_element = "#"; 
$end_element = "!content"; 
$start_pos = strpos($webpage_content, $start_element); 
$en_post = strpos($webpage_content, $end_element); 

$my_string = substr($webpage_content, $start_pos, $en_post-$start_pos); 
print $my_string; 
?> 

您应该掌握所有信息,您需要解决您的问题。请阅读我们发布的链接。 PHP手册以20多种语言提供。