首页 > 解决方案 > 替换 PHP 字符串

问题描述

我有一个 php 字符串,如下所示“published-on-February-5--9785”

我想像“published-on-February59785”一样替换它,

请注意,“-”仅在出现在数字之前时才会被替换。

谢谢 Sougata

标签: php

解决方案


您可以使用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参数,我们将使用$1which 基本上表示组号 1(组是匹配[0-9]+的数字)。

最终结果是

preg_replace("/\-+([0-9]+)/", "$1", $string);

在小提琴中看到它:https ://sandbox.onlinephpfunctions.com/code/3c7a6135ecf0df57d8d3c5db87f76a8d7451f93e

您可以在许多在线文章中了解更多关于正则表达式的信息,您也可以使用这个网站玩转:https ://regex101.com


推荐阅读