首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用preg_replace删除括号并将php中的“空格”替换为"-“

如何使用preg_replace删除括号并将php中的“空格”替换为"-“
EN

Stack Overflow用户
提问于 2021-07-06 13:57:48
回答 3查看 50关注 0票数 2

这就是我所拥有的--华为MatePad 11 (2021)

这就是我想要的-华为-MatePad-11-2021

这就是我到目前为止所做的。(只是它将“空格”替换为"-“。

代码语言:javascript
复制
echo preg_replace('/[[:space:]]+/', '-', $test);

我想删除圆括号,并想立即用"-“替换”空格“。该怎么做呢?

EN

回答 3

Stack Overflow用户

发布于 2021-07-06 14:22:34

代码语言:javascript
复制
$text = 'Huawei MatePad 11 (2021)';
$text = preg_replace('/[(|)]/', '', preg_replace('/\s+/', '-', $text));

echo($text);
票数 1
EN

Stack Overflow用户

发布于 2021-07-06 14:27:10

代码语言:javascript
复制
$test = preg_replace('/[[:space:]]+/', '-', $test); # Replace space
$test = preg_replace('/[\(|\)]+/', '', $test);      # Replace parenthesis 

echo $test;
票数 1
EN

Stack Overflow用户

发布于 2021-07-06 15:02:22

您也可以将单个模式与preg_replace_callback一起使用,并从开始到结束括号进行匹配。

代码语言:javascript
复制
\(([^()]+)\)|\h+

模式匹配:

  • \( match (
  • ([^()]+) )
  • \) )
  • | Or
  • \h+ Match 1 Match 1+ chars ( )
  • \) Match )
  • |Or
  • \h+Match 1 or more horizontal ( chars

Php demo | Regex demo

例如,如果存在,则使用$m[1]返回group 1,否则返回-

代码语言:javascript
复制
$s = "Huawei MatePad 11 (2021)";
$regex = "/\(([^()]+)\)|\h+/";
$result = preg_replace_callback($regex, function($m) {
    return array_key_exists(1, $m) ? $m[1] : '-';
}, $s);
echo $result;

输出

代码语言:javascript
复制
Huawei-MatePad-11-2021
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68265247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档