php - 替换 PHP 字符串
问题描述
我有一个 php 字符串,如下所示“published-on-February-5--9785”
我想像“published-on-February59785”一样替换它,
请注意,“-”仅在出现在数字之前时才会被替换。
谢谢 Sougata
解决方案
您可以使用preg_replace
在 PHP中调用的正则表达式替换
文档:https ://www.php.net/manual/en/function.preg-replace.php
preg_replace ( string|array $pattern , string|array $replacement , string|array $subject , int $limit = -1 , int &$count = null ) : string|array|null
这是完整的定义,但我们可以关注前 3 个参数,它们preg_replace($pattern, $replacement, $subject)
很$subject
简单,只是输入
对于其他参数,如果您还没有,您需要对正则表达式有所了解。对于删除-
数字之前是否存在的特殊情况,我认为您可以使用/\-+([0-9]+)/
这/
只是一个分隔符或其他东西,因为 PHP 在使用正则表达式时需要分隔符。+
符号意味着至少有 1 个或多个在它们之前声明的字符,只是\-
一个转义,-
因为-
在正则表达式语法中使用,然后[0-9]
意味着该字符可以在字符 '0' 到 '9' 之间(在 ASCII 中),这基本上意味着一个数字。括号符号仅用于分组,因此您可以稍后使用它来替换字符串。所以/\-+([0-9]+)/
意味着匹配所有-
这些后跟任意数量的数字。
对于$replacement
参数,我们将使用$1
which 基本上表示组号 1(组是匹配[0-9]+
的数字)。
最终结果是
preg_replace("/\-+([0-9]+)/", "$1", $string);
在小提琴中看到它:https ://sandbox.onlinephpfunctions.com/code/3c7a6135ecf0df57d8d3c5db87f76a8d7451f93e
您可以在许多在线文章中了解更多关于正则表达式的信息,您也可以使用这个网站玩转:https ://regex101.com
推荐阅读
- java - How to get the unique list of elements from a map values
- c# - Replace values from Select query in SQL using C#
- node.js - How can get chat history of users in botpress?
- c++ - “初始化”到底是什么意思?
- python - 我编写了这段代码,用于将列表中的值插入 mysql 数据库,但出现编程错误
- node.js - 找不到模块“./client/Client”不和谐机器人错误
- java - java.lang.instrument.Instrumentation 没有给出预期的结果
- php - 无法从使用 PHP Simple DOM 标记
- pine-script - 如何使用内置“句点”变量?
- google-sheets-api - Google Sheet API - 如何仅获取更新的行