PHP изменить TXT файл
У меня есть удостоверение личности.txt файл, который выглядит следующим образом:
"http://something.net/something-ak/41389_718783565_1214898307_q.jpg"
"http://something.net/something-ak/372142_106502518141813_1189943482_q.jpg"
and so on
Я хочу использовать PHP, чтобы открыть файл и удалить все до первого " _ "и все после второго"_", поэтому я заканчиваю с этим:
718783565
106502518141813
and so on
Дело в том, что я действительно не знаю, как это сделать.
Вот что у меня есть до сих пор:
<?PHP
$file_handle = fopen("ID.txt", "rb");
while (!feof($file_handle) ) {
$line_of_text = fgets($file_handle);
$parts = explode('n', $line_of_text);
// Remove everything before the first "_" and everything after the last "_".
// echo the line
}
fclose($file_handle);
?>
Может кто - нибудь помочь мне заполнить пробелы?
5 ответов:
Вот что я бы сделал, хотя регулярное выражение может быть короче или эффективнее:
$file_handle = fopen("ID.txt", "rb"); while (!feof($file_handle) ) { $line_of_text = fgets($file_handle); $parts = explode("\n", $line_of_text); foreach ($parts as $str) { $str_parts = explode('_', $str); // Split string by _ into an array array_shift($str_parts); // Remove first element echo current($str_parts)."\n"; // echo current element and newline // Same as $str_parts[0] } } fclose($file_handle);Демо: http://codepad.org/uFbVDtbR
Ничего особенного, но
$linesможет быть лучшим именем переменной вместо$parts.Если вам нужно записать это обратно в файл, вы можете сделать следующее:
ob_start(); // code used above $new_content = ob_get_clean(); file_put_contents("ID.txt", $new_content);Релевантно список литературы:
Попробуйте это
Preg_match('/(.* ?) (.+?) (.*) /', $ line,$matches);
$matches[2] даст требуемую строку
Это должно сработать
<?php // open files $file_handle = fopen("ID.txt", "rb"); $new_file_handle = fopen("ID2.txt", "wb"); while (!feof($file_handle) ) { $str = fgets($file_handle); $start = strpos($str, '_'); // find first "_" $end = strpos($str, '_', $start + 1); // find next "_" $newstr = substr($str, $start + 1, $end - $start - 1) . "\n"; fputs($new_file_handle, $newstr); } // close files fclose($file_handle); fclose($new_file_handle); // rename rename("ID2.txt", "ID.txt");
$TXT = file_get_contents(__DIR__.'/in.txt'); $NewTXT = preg_replace('~^.+/[0-9]+_([0-9]+)_.+?$~mi', '$1', $TXT); file_put_contents(__DIR__.'/out.txt', $NewTXT);Просто переименуйте .txt файлы соответственно.
Comments