Php 将符号(&;)替换为查询字符串中的%26

Php 将符号(&;)替换为查询字符串中的%26,php,regex,url,Php,Regex,Url,我得到的查询字符串是q=pen&fq[category]=Pens&Refills&fq[category\u id]=34,如何将和替换为%26仅在此中,而不是全部和。请有人帮助我使用正则表达式模式完成此操作。如下所示: $regex = "~[ ]\K&~"; $replaced = preg_replace($regex,"%26",$string); 在中,请参见底部的更换 解释 []匹配一个空格。你不需要括号,但这样读起来更容易 \K告诉引擎放弃到目前为止与整体匹配不匹配的

我得到的查询字符串是
q=pen&fq[category]=Pens&Refills&fq[category\u id]=34
,如何将
替换为
%26
仅在此
中,而不是全部
。请有人帮助我使用正则表达式模式完成此操作。

如下所示:

$regex = "~[ ]\K&~";
$replaced = preg_replace($regex,"%26",$string);
在中,请参见底部的更换

解释

  • []
    匹配一个空格。你不需要括号,但这样读起来更容易
  • \K
    告诉引擎放弃到目前为止与整体匹配不匹配的内容
  • &
    匹配我们的字符,我们知道它是正确的,因为它前面有一个空格
  • 我们将其替换为
    %26
不支持
\K

我们本可以用一个了望台:

(?<=[ ])&
像这样:

$regex = "~[ ]\K&~";
$replaced = preg_replace($regex,"%26",$string);
在中,请参见底部的更换

解释

  • []
    匹配一个空格。你不需要括号,但这样读起来更容易
  • \K
    告诉引擎放弃到目前为止与整体匹配不匹配的内容
  • &
    匹配我们的字符,我们知道它是正确的,因为它前面有一个空格
  • 我们将其替换为
    %26
不支持
\K

我们本可以用一个了望台:

(?<=[ ])&

如果出于某种原因确实需要替换该字符,则无需使用正则表达式即可完成此操作

$string = str_replace(' & ', ' %26 ', $string);

如果出于某种原因确实需要替换该字符,则无需使用正则表达式即可完成此操作

$string = str_replace(' & ', ' %26 ', $string);

你可以用积极的回顾

$regex = "~(?<=Pens ).~";
$replaced = preg_replace($regex,"%26",$string);

你可以用积极的回顾

$regex = "~(?<=Pens ).~";
$replaced = preg_replace($regex,"%26",$string);

“我正在获取查询字符串”是什么意思?如何以及为什么一开始就搞砸了?使用
$\u SERVER['QUERY\u STRING']
我得到了查询字符串我的意思是为什么查询字符串一开始就搞砸了?你说的“我得到了查询字符串”是什么意思?如何以及为什么一开始就搞砸了?使用
$\u SERVER['QUERY\u STRING']
我得到了查询字符串我的意思是为什么查询字符串一开始就搞砸了?仅供参考,添加了其他语言的演示、解释和选项。:)供参考添加了其他语言的演示、解释和选项。:)不是所有的
&
,只有当类别有
&
时才有效。谢谢对于简单的事情,我把它复杂化了:-(不用担心,很高兴我能帮上忙。不是所有的
&
,只有在类别有
&
的情况下才行。谢谢。对于简单的事情,我把它复杂化了:-(不用担心,很高兴我能帮上忙。谢谢。笔不是静态的,它是动态的类别名称。只需要更改类别有
&
@Raj)ツ 您似乎想替换前后都有空格的
&
符号。我更新了代码。谢谢。Pens不是静态的,它是动态类别名称。只需更改类别的
&
@Rajツ 您似乎想替换前后都有空格的
&
符号。我更新了代码。