Как удалить содержимое между X и Y, используя preg_replace? - PullRequest
1 голос
/ 19 октября 2010

Каково будет регулярное выражение для удаления любого содержимого между кавычкой и каталогом «uploads /»?

Используя генератор регулярных выражений, я получаю это: (? <= \ = ") [^] +? (? = uploads /) </p>

$block_data = preg_replace('/(?<=\=")[^]+?(?=uploads/)/g','',$block_data);

Но, похоже, удаляет все: (

Ответы [ 2 ]

3 голосов
/ 19 октября 2010

Вы должны экранировать "/" в "uploads /", и g не является допустимым модификатором, плюс [^] недопустим, я думаю, что вы хотели . вместо.

ВотВаше регулярное выражение:

/(?<=\=").+?(?=uploads\/)/

Тест по ideone

2 голосов
/ 19 октября 2010

Простое решение будет

$block_data = preg_replace('/(?<=").*?(?=uploads\/)/','',$block_data);

Изменения сделаны:

  1. Упрощение ваших взглядов за взглядом и взглядом вперед
  2. избежал / в предвкушении
  3. удален модификатор g, который не нужен в PHP

Насколько я могу судить, это работает, уменьшая first"middle/uploads/end" до first"uploads/end".

...