得到一个文本文件中的行所以我知道如何打开一个PHP文件中使用如何使用CakePHP
fopen("file.txt", 'r') ;
做,但我想要得到的文件在同一行等一些字符串操作上它。
如
我想找到与“服务这个”开头的行,并采取整条生产线将它添加到$线
然后我会删除“与< 0101010>服务这个”在<>并将其添加到$号码,同样为方法< 0101010>
名,可用于将只是完美
得到一个文本文件中的行所以我知道如何打开一个PHP文件中使用如何使用CakePHP
fopen("file.txt", 'r') ;
做,但我想要得到的文件在同一行等一些字符串操作上它。
如
我想找到与“服务这个”开头的行,并采取整条生产线将它添加到$线
然后我会删除“与< 0101010>服务这个”在<>并将其添加到$号码,同样为方法< 0101010>
名,可用于将只是完美
好了,简单的方法,你可能要到u SE是:
foreach (file("file.txt") as $line) {
if (strpos($line, "Serving this with") === 0) {
print "found";
的file
函数比的fopen/FREAD更容易,因为它返回行的列表了。而strpos
函数只是搜索字符串并返回位置。必须在这里检查=== 0
,因为它也可以返回false
。
除了打印“发现”要提取的东西,所以你必须再次使用strpos
找到你的定界符<
和>
,然后提取与substr
部分组成:
$l = strpos($line, "<"); // well, actually needs more logic,
$r = strpos($line, ">"); // some if tests, if both are true
$wanthave = substr($line, $l, $r - $l + 1);
一个简单的选择我会用正则表达式。而正则表达式本身看起来你的情况很简单:
preg_match_all('/^Serving this with <(\d+)>/m',
file_get_contens("file.txt"),
$matches);
print_r($matches[1]);
非常感谢..我正在尝试它..但我有这个愚蠢的错误,我正在访问文件这种方式.... $ myfile = $ this-> webroot.'app'.DS。' webroot'.DS.'kannel'.DS.'receive.log“;它说它不存在。但它呢!你看到那条线上有什么错误!因为它有点让我疯狂! – msheshtawy 2011-04-17 19:26:55
不知道。但是,也许你错过了webroot之后的第一个斜线。使用'DS'是没有意义的,因为'/'斜杠在每个plattform上都有效。 '$这 - >根目录 '/应用/根目录/ Kannel的/ receive.log'。 ' – mario 2011-04-17 19:45:10
/应用程序自动添加之前。仍然当我改变“没有这样的文件”这真的很愚蠢! 是否有某种绝对路径方法。我查了一下,但我没有找到任何东西! – msheshtawy 2011-04-17 20:10:21
你也可以用fgets()一行读取文件中的行。
$line = fgets($file_handle);
'fopen'和你可能想要使用的其他函数,'strpos'和'substr'不是cakephp函数。 – mario 2011-04-17 17:43:15
是否意味着你不能在Cakephp中使用它们? – msheshtawy 2011-04-17 17:44:35
是的,你可以在CakePHP中使用它们。他们与CakePHP没有任何关系。这与这个问题无关,除非你真的想要一些古怪的CakePHP特定方法来搜索你的文本文件(?) – mario 2011-04-17 17:47:01