regex PHP preg_replace三次使用三种不同的模式?对还是错?[duplicate]

vsikbqxv  于 2023-03-09  发布在  PHP
关注(0)|答案(4)|浏览(102)
    • 此问题在此处已有答案**:

Search and replace multiple values with multiple/different values in PHP?(5个答案)
2天前关闭。
一个简单的问题:这是最好的办法吗?

$pattern1 = "regexp1";
$pattern2 = "regexp2";
$pattern3 = "regexp3";

$content = preg_replace($pattern1, '', $content);
$content = preg_replace($pattern2, '', $content);
$content = preg_replace($pattern3, '', $content);

我有三个搜索模式,我想过滤掉!是我的代码以上适当或有一个更好的方式?

jfewjypa

jfewjypa1#

由于要将all替换为same,因此可以传递一个数组

$content = preg_replace(array($pattern1,$pattern2, $pattern3), '', $content);

或者创建一个表达式:

$content = preg_replace('/regexp1|regexp2|regexp3/', '', $content);

如果“表达式”实际上是纯字符串,请改用str_replace

brtdzjyr

brtdzjyr2#

一种可读性很强的方法是创建一个包含模式和替换的数组,然后在preg_replace中使用array_keysarray_values

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

bnl4lu3b3#

我希望这个例子能帮助你理解“在数组中查找”和“从数组中替换”

$pattern=array('1','2','3');
$replace=array('one','two','tree');
$content = preg_replace($pattern,$replace, $content);
7rfyedvj

7rfyedvj4#

要在一个preg_replace()调用中执行多个搜索,请使用模式数组。您仍然可以传递一个替换,这是所有三个模式匹配的内容替换为:

$content = preg_replace(array($pattern1, $pattern2, $pattern3), '', $content);

相关问题