在PHP中,从字符串开头删除几个字符?

在PHP中,从字符串开头删除几个字符?,php,string,Php,String,我需要从文本文件中找到一行特定的文本, 然后将其复制到新的文本文件: 1:我有一个文本文件,有几行文本,例如: JOHN MIKE BEN *BJAMES PETE 2:所以,我把文本文件的内容读入一个数组, 将每行文本放置到数组的一个单独元素中 3:然后我测试了数组的每个元素, 要找到以开头的行,请说:*B ie: if ( preg_match( "/^\*(B)/",$contents[$a] ) ) 哪个好用 4:然后我把那行文字复制(写)到一个新的文本文件中 问:那么我如何从那行文

我需要从文本文件中找到一行特定的文本, 然后将其复制到新的文本文件:

1:我有一个文本文件,有几行文本,例如:

JOHN
MIKE
BEN
*BJAMES
PETE
2:所以,我把文本文件的内容读入一个数组, 将每行文本放置到数组的一个单独元素中

3:然后我测试了数组的每个元素, 要找到以开头的行,请说:*B ie:

if ( preg_match( "/^\*(B)/",$contents[$a] ) )
哪个好用

4:然后我把那行文字复制(写)到一个新的文本文件中

问:那么我如何从那行文本中删除“*B”,
在我将其写入新文本文件之前?

如果您已经使用了
preg\u match
,您可以修改您的正则表达式以在另一个变量中获得所需的内容

if (preg_match('/^\*B(.*)$/', $contens[$a], $matches)
{
    fwrite($targetPointer, $matches[1]);
}  
使用
preg_match
后,变量
$matches
保存括号内的正则表达式子部分的单个匹配项。因此,行的相关部分由
(.*)
匹配,并保存到
$matches[1]

使用或。

试试:

preg_replace('/^\*B/', '', $content[$a], -1, $count);
if ($count) {
    fwrite($file, $content[$a]);
}

这种方法在读取文件时写入行,这更节省内存:

$sourceFile      = new SplFileObject('source.txt');
$destinationFile = new SplFileObject('destination.txt', 'w+');
foreach (new RegexIterator($sourceFile, '/^\*B.*/') as $filteredLine) {
    $destinationFile->fwrite(
        substr_replace($filteredLine, '', 0, 2)
    );
}