PHP preg_replace три раза с тремя разными шаблонами? правильно или неправильно?

эй, ребята, простой вопрос … Это лучший способ сделать это?

$pattern1 = "regexp1"; $pattern2 = "regexp2"; $pattern3 = "regexp3"; $content = preg_replace($pattern1, '', $content); $content = preg_replace($pattern2, '', $content); $content = preg_replace($pattern3, '', $content); 

У меня есть три шаблона поиска, которые я хочу отфильтровать! Является ли мой код выше подходящего или есть лучший способ?

Благодарю вас за информацию

Related of "PHP preg_replace три раза с тремя разными шаблонами? правильно или неправильно?"

Поскольку вы заменяете все на то же, вы можете либо пройти массив

 $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 );