使用php删除##之后的部分字符串



我有一个文件,其中有很多行包含##。我想删除字符串##之后的部分。

以下是我尝试过的

<?php
$file = fopen("testr.txt", "r");
$NewLineExplode = explode(PHP_EOL,$file);
$NewString      = '';
foreach($NewLineExplode  as $eachLine) {
$HashExlode = explode('##',$eachLine);
$NewString .= $HashExlode[0].'<br>';
}
echo $NewString;
?>

testr.txt看起来像这个

citycredits.ru##.widget_banner
anvidelabs.org##.widget_banners
hcpeople.ru##.widget_board_ads
newsoboz.org##.widget_center > noindex
softolet.ru##.widget_custom_html
edurusnews.ru##.widget_execphp
poznamka.ru##.widget_hja_adsense
softolet.ru##.widget_media_image
yuzhny.info##.widget_media_image > img[width="360"][height="520"]

输出应该像这个

citycredits.ru
anvidelabs.org
hcpeople.ru
newsoboz.org
softolet.ru
$string = fopen("testr.txt", "r");
$NewString      = '';
// Output one line until end-of-file
while(!feof($string)) {
$HashExlode = explode('##',fgets($string));
$NewString .= $HashExlode[0].'<br>';
}
echo $NewString;
fclose($string);

我会在这里使用preg_replace

$file = fopen("testr.txt", "r");
$firstLine = true;
$NewString = "";
while(!feof($file))  {
$eachLine = fgets($fn);
$eachLine = preg_replace("/##.*$/", "", $eachLine);
if (!firstLine) {
$NewString .= '<br>';
}
else {
firstLine = false;
}
$NewString .= '<br>';
}
echo $NewString;
fclose($file);

更改了几行。可以尝试使用此代码。

<?php
$file = fopen('testr.txt', "r");
while (!feof($file) ) {
$line_of_text = fgets($file);
$NewLineExplode = explode(PHP_EOL, $line_of_text);

$NewString      = '';
foreach ($NewLineExplode  as $eachLine) {
$HashExlode = explode('##',$eachLine);
$NewString .= $HashExlode[0].'<br>';
}
echo $NewString;
}

您也可以在没有循环的情况下完成:

$inputFile = 'testr.txt';
$outputFile = 'testr2.txt';
file_put_contents($outputFile, preg_replace('~##.*$~m','',file_get_contents($inputFile)));
$filePath = 'testr.txt';
$file = fopen($filePath, 'r');
if ($file) {
$text = fread($file, filesize($filePath));
$lines = explode(PHP_EOL, $text);
$result = '';
foreach ($lines as $line) {
$result .= substr($line, 0, strpos($line, '##'));
}
echo $result;
}

最新更新