gpt4 book ai didi

php preg_replace 问号 ("?") - 不工作

转载 作者:行者123 更新时间:2023-12-05 08:15:42 26 4
gpt4 key购买 nike

我有一个字符串

$name = "name1?name2?name3?name4";

我想修改这个变量为

$name2 = "name1/name2/name3/name4";

使用 PHP preg_replace .

我该怎么做?

最佳答案

你必须使用 \ 转义 ?

<?php
$string = 'name1?name2?';
$pattern = '/\?/';
$replacement = '/';
echo preg_replace($pattern, $replacement, $string);
?>

测试时间...

我支持我的回答,因为它最直接地回答了 OP 的问题。但我的速度评论并不准确——一点也不准确。我发现的差异很容易看出,但不是那么令人印象深刻 IMO。*

基准:我采用 OP 的字符串并将其连接 500000 次 - 因此每个函数都会有大量的替换操作(150 万或 200 万次,视情况而定)。

以下是函数及其速度:

str_replace('?', '/', $test); // name1/name2/name3/name4/
0.388642073
0.389673948
0.385308981

preg_replace('/\?/', '/', $test); // name1/name2/name3/name4/
0.812348127
0.812065840
0.819634199

$bad = array('1?','2?','3?');
$good = array('1/','2/','3/');
str_replace($bad, $good, $test); // name1/name2/name3/name4?
0.712552071
0.725568056
0.718420029

preg_replace('/\?(\w+\d+)/', '/$1', $test); // name1/name2/name3/name4?
1.515372038
1.516302109
1.517566919

所以……我输了。此测试表明 str_replace() 比 preg_replace() 快 2 倍。但是,当您考虑所有 150 万次替换都已完成时,1.5 秒与 0.7 秒(最后两个函数)并不差 - 更不用说最后一个将解决比其竞争对手更多的组合。

当您编写完美的 RegEx 函数时,难道您不想庆祝一下吗? :-)

关于php preg_replace 问号 ("?") - 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5562261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com