Есть код который ищет число в файле, и удаляет его если оно присутствует, а если нет то ничего не делает:
$key = $_REQUEST['del'];
$filename = 'list.txt';
$lines = file($filename);
$output = '';
foreach ($lines as $line) {
if (!strstr($line, $key)) {
$output .= $line;
}
}
file_put_contents($filename, $output);
Но проблемы возникают когда допустим в файле число 11 или 15 и при попытке удалить число 1, которого там нет, удалятся и 11 и 15 (то есть все что начинается с 1). Как сделать так чтобы удалялось только точное число? Пытался поменять strstr на preg_match, не получилось...
Что то вроде - (?:\D|^)(1)(?:\D|$) (то что в первое в голову пришло), найти 1 если вокруг не цифры.
Пример
$key = 1;
$lines = ['asda asdf sdfasdas 11 adsdsdf', 'фыавыва ывавва 1 ыпвап ываыв 1'];
$output = '';
foreach ($lines as $line) {
if (!preg_match("/(?:\D|^)($key)(?:\D|$)/", $line)) {
$output .= $line;
}
}
echo $output;
Читайте файл целиком, зачем он вам по строкам?
$txt = file_get_contents("list.txt");
$value = 15; // число для удаления
$txt = preg_replace("/\b($value)\b/", "", $txt);
file_put_contents("list.txt", $txt)
Впрочем, нет смысла записывать контент файла обратно, если совпадение не найдено. Поэтому можете:
не забывайте также, что входные данные необходимо провалидировать, прежде чем подставить в регулярное выражение. То есть если вы хотите убрать число, то удостоверьтесь, что передается именно число. В прочих случаях экранируйте значения с помощью preg_escape.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости