эй, ребята, простой вопрос … Это лучший способ сделать это?
$pattern1 = "regexp1"; $pattern2 = "regexp2"; $pattern3 = "regexp3"; $content = preg_replace($pattern1, '', $content); $content = preg_replace($pattern2, '', $content); $content = preg_replace($pattern3, '', $content);
У меня есть три шаблона поиска, которые я хочу отфильтровать! Является ли мой код выше подходящего или есть лучший способ?
Благодарю вас за информацию
Поскольку вы заменяете все на то же, вы можете либо пройти массив
$content = preg_replace(array($pattern1,$pattern2, $pattern3), '', $content);
или создать одно выражение:
$content = preg_replace('/regexp1|regexp2|regexp3/', '', $content);
Если «выражения» на самом деле являются чистыми символьными строками, вместо этого используйте str_replace
.
надеюсь, что этот пример поможет вам понять «найти в массиве» и «заменить из массива»,
$pattern=array('1','2','3'); $replace=array('one','two','tree'); $content = preg_replace($pattern,$replace, $content);
Чтобы выполнить несколько запросов в одном preg_replace()
, используйте массив шаблонов. Вы все равно можете передать одну замену, это то, что соответствует всем трем шаблонам, заменяется на:
$content = preg_replace(array($pattern1, $pattern2, $pattern3), '', $content);
Очень читаемым подходом является создание массива с шаблонами и заменами, а затем использование array_keys
и array_values
в preg_replace
$replace = [ "1" => "one", "2" => "two", "3" => "three" ]; $content = preg_replace( array_keys( $replace ), array_values( $replace ), $content );
Это даже работает с более сложными шаблонами. Следующий код заменит 1, 2 и 3, и он удалит двойные пробелы.
$replace = [ "1" => "one", "2" => "two", "3" => "three", "/ {2,}/" => " " ]; $content = preg_replace( array_keys( $replace ), array_values( $replace ), $content );