Regex — удалить все строки, которые не соответствуют шаблону

У меня есть следующая строка (с символами новой строки):

<a>something1</a>
<a>something2</a>
<a>something3</a>

Мне нужно сопоставить что-то 2 и что-то 3 и заменить его, но тогда у меня есть результат:

<a>something1</a>
<a>replacement2</a>
<a>replacement3</a>

но мне нужны только замены, а не что-то1. Есть 3000 таких строк, поэтому удаление этого заняло бы много времени. Есть ли у вас какие-либо идеи?

1

Решение

Ты можешь использовать preg_filter функция сделать фильтрацию и замену за один раз:

$s = <<< EOF
<a>something1</a>
<a>something2</a>
<a>something3</a>
EOF;

$subject = explode("\n", $s);
echo implode("\n", preg_filter('~\bsomething([02-9])\b~', 'replacement$1', $subject));

ВЫХОД:

<a>replacement2</a>
<a>replacement3</a>
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]