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