2012-05-11 7 views
0

Хотя регулярные выражения, похоже, повторяющиеся проблемы, я не нашел решения для своей проблемы.Удаление многих строк с использованием preg_replace в php

У меня есть файл из нескольких строк (> 75 000), в котором я хочу заменить их много, все между двумя идентифицируемыми шаблонами (start_point и end_point). Моя попытка повторного использования:

$filtered = preg_replace('%(#\sstarting_point).+(#\sending_point)%isU',$replacement,$2befiltered); 

. теперь любой персонаж, включая \ n. Я использовал% ..% в качестве разделителей, потому что у моих строк почти что угодно, но нет% (что-то включает /, $, -, ", пробелы, +, {,}), и я испытывал" компиляцию не удалось: ничего повторить при смещении ... ».

Но я не могу заставить его работать. Я думал, возможно, что проблема с pcre в php.ini была проблемой, но это не похоже. Я пытался использовать ?U, без успеха . то же самое с. *? как я читал в некоторых местах. Может быть, я просто написал их неправильно, но ..

во всяком случае, кто хочет почесать голову по этому поводу?

текстовый пример (с ... обозначение многих других линий):

whatever 
lines 
you 
can 
... 
# starting_point 
lines/*- 
to$_," 
delete+{}[email protected] 
... 
# ending_point 
some 
other 
lines 
... 
+0

Что именно вы хотите заменить? Каждая строка между start_point и end_point? – Jeroen

+0

Да, точно, и сохраняйте все, что есть до или после. – euphory

ответ

0

Это похоже на работу: %(#\sstarting_point)(.*?)(#\sending_point)%isU

$ матчей [2] [0] содержит строки Inbetween # starting_point и # ending_point

+0

Работал отлично! Большое спасибо! – euphory

0
$filtered = preg_replace('/(#\sstarting_point)(.*?)(#\sending_point)/sm', $replacement,$2befiltered); 

Попробуйте это.

+0

этот не работал :(но у меня есть решение, спасибо за вашу помощь! – euphory

 Смежные вопросы

  • Нет связанных вопросов^_^