preg_replace删除多个匹配项

时间:2011-04-18 22:02:58

标签: php regex preg-replace

我环顾四周但找不到合适的解决方案。

我有这个字符串

$area = array("Some Text area 1", "Some Text area 2", "Some Text area 33", "Some Text area 40")

我想构建一个preg_replace,它将删除单词“area”和后面的1或2位数字。

我可以这样删除“区域1”

$area = preg_replace('/area 1/','', $area);

我可以继续重复此操作以删除其他匹配,但效率不高。

我可以只使用一个preg_replace删除模式吗?

提前致谢

4 个答案:

答案 0 :(得分:2)

$area = preg_replace('/area [0-9]+/','', $area);

将删除所有包含文字'area'后跟数字的匹配。

答案 1 :(得分:1)

使用以下内容指定至少一位数字:
preg_replace('/area [0-9]+/','', $area);

答案 2 :(得分:1)

你还想删除“区域”一词之前的空格吗?代码将是:

$area = preg_replace('/ area \d+/', '', $area);

答案 3 :(得分:0)

在搜索类似内容时遇到过这篇文章:在文本字符串中替换多个术语。

所以,例如,我正在自动生成下拉选择,并且选项基于文件名,我需要加载文件名并生成一个人类可读的文件名。

我的文件名为:temp_Event_Name.php

所以我必须删除“temp”,“_”和“.php”以便有一个可选择的选项,该值将是要传递到后续表单的文件名,该表单将使用该文件生成PDF。

<select>
 <option value="temp_Event_Name_2011.php">Event 1</option>
 <option value="temp_Event_Name_2012.php">Event 2</option>
</select

我发现使用str_replace

所以完整的代码是:

$i = 0;
foreach( $files as $d ){
    $file_and_name .= '<option value="'.$files[$i].'">'.str_replace('temp','',str_replace('_',' ',str_replace('.php','',$d) ) )."</option>\n";
    $i++;
}

其中 $ files是一个带有文件名的数组,我通过以下方式获得:

$files = array();
$files = glob("temp_*.php");

显然需要额外的格式化才能将其纳入我提议的html中,但这很容易。希望它能帮助@jamester或遇到此事的任何人。