在php字符串中消除“+”,其中“ - ”显示正常

时间:2016-08-14 02:56:26

标签: php

如何修复或避免字符串中缺少+符号。 我使用相同的代码 - 它工作正常。 我尝试过使用$ num1。“+”。$ num2没有运气,非常奇怪。 Photo of broblem

if(stripos ($text, 'add') !== false){
    $trimtext = substr($text,3);
    $num1 = strstr($trimtext, '+', true);
    $trimnum2 = strstr($trimtext, '+', false);
    $num2 = str_replace("+","",$trimnum2); 
    $result = $num1 + $num2;    
    file_get_contents("$website/sendmessage?&parse_mode=HTML&chat_id=$chatid&text=<code>$num1 + $num2 = $result</code>");       
}

if(stripos ($text, 'sub') !== false){
    $trimtext = substr($text,3);
    $num1 = strstr($trimtext, '-', true);
    $trimnum2 = strstr($trimtext, '-', false);
    $num2 = str_replace("-","",$trimnum2); 
    $result = $num1 - $num2;    
    file_get_contents("$website/sendmessage?&parse_mode=HTML&chat_id=$chatid&text=<code>$num1 - $num2 = $result</code>");   
}

2 个答案:

答案 0 :(得分:0)

你的问题是&#34; +&#34;是URL编码中的空间。你需要替换&#34; +&#34;用&#34;%2B&#34;在查询字符串中。

要纠正Nehal的答案,你想要

file_get_contents("$website/sendmessage?&parse_mode=HTML&chat_id=$chatid&text=".urlencode("<code>$num1 + $num2 = $result</code>"));

您不希望对$ website变量或其他查询参数的内容进行URL编码,而是将它们添加到URL编码的字符串中。

答案 1 :(得分:0)

以下字符在您网址的路径组件中具有特殊含义(路径组件是&#39;?&#39;之前的所有内容):

  ";" | "/" | "?"

除此之外,以下字符在您网址的查询部分中具有特殊含义(&#39;?&#39;之后的所有内容)。因此,如果他们是在&#39;&#39;之后?你需要逃脱它们:

 ":" | "@" | "&" | "=" | "+" | "$" | ","

有关更深入的说明,请参阅RFC

根据PHP文档:

  

注意:如果您要打开包含特殊字符的URI,例如空格,   你需要用urlencode()编码URI。

所以,你要做的就是:

file_get_contents(urlencode("$website/sendmessage?&parse_mode=HTML&chat_id=$chatid&text=<code>$num1 + $num2 = $result</code>"));