【问题标题】:How to receive carriage return in URL and split on carriage return in php如何在 URL 中接收回车并在 php 中拆分回车
【发布时间】:2017-09-13 05:46:53
【问题描述】:
url = "http://localhost/reply.php?r=" & Now & "&msg=" & objMessageIn.Body & "&s=" & objMessageIn.Sender

PHP Code:
$ID = rawurlencode($_GET['msg']);
    $SENDER = $_GET['s'];
    $ID_upper = strtoupper($ID);


    print_r($ID_upper);


    $myArray = explode("%0a", $ID_upper);
    print_r($myArray);

我想在 URL 中接收回车并将数据拆分保存在变量中。 例如: 在短信里写

365 
LES-12-5666
1
2
5
6

此 SMS 在 GSM 设备中接收并在 PHP 中获取 URL。 当我收到 URL 时,PHP 删除回车并显示数组,即 365LES-12-56661256 我想要这种类型的结果

array()
{
[0]=>365
[1]=>LES-12-5666
[2]=>1
[3]=>2
[4]=>5
[5]=>6
}

我想在回车时拆分。但是 PHP 删除了回车,所以我无法拆分这个数组。

提前致谢

【问题讨论】:

  • 欢迎来到 StackOverflow。请在您的问题正文中发布所有相关代码。我们应该能够将您的代码粘贴到文本文件中。发布链接使我们难以为您提供帮助,并且如果链接将来失效,该问题对访问者将变得毫无用处。请阅读并遵循发布指南:我可以问什么样的问题stackoverflow.com/help/on-topic,以及如何提问:stackoverflow.com/help/how-to-ask,以及最小、完整、可验证的示例:stackoverflow.com/help/mcve。然后edit您的问题,以便我们提供帮助。
  • @SherylHohman 谢谢我已经编辑了问题
  • @SherylHohman 我已成功收到味精,但没有回车。我想在回车时拆分味精

标签: php url


【解决方案1】:

更新:

我已经重做我的答案,下面是代码和解释:

<?php

$url = urlencode("http://www.example.com?r=Now&msg='365\nLES-12-5666\n1\n2\n5\n6\n'&s=&me");

preg_match("/%26msg.+%27/",$url,$matches);

$ID = urldecode( $matches[0]);

$myArray = explode("\\n", $ID);
list(,$str) = explode("=",$myArray[0]);
$str = substr($str,1,-1);
$arr = explode("\n",chop($str));
var_dump($arr);

live code

注意:此答案仅关注查询字符串的“msg”部分的值。在现实生活中可能有一个 $_GET 变量,但在这种情况下,将 url 作为查询字符串使用会更容易。

url 是 urlencoded,它允许传输编码为“%0A”的换行符。该代码使用正则表达式仅提取查询字符串的“msg”部分。然后对该结果进行 urldecoded,它允许换行符显示为“\n”。但是,在 PHP 中,有时必须将换行符称为"\\n",正如explode() 的一个实例所示,由于字符串值包含在单引号字符串中。该上下文中的换行符由两个斜杠组成,表示一个斜杠,它转义“n”以代表换行符。

$myArray 包含一个元素,其值为字符串“msg='365\nLES-12-5666\n1\n2\n5\n6\n'”。代码拆分“=”上的字符串以获取“msg”的值,该值实际上是包含在字符串中的单引号字符串。该代码使用 substr() 来提取内部字符串。为了避免不必要的空字符串,代码将终止换行符切掉,并将基于“\n”字符的字符串分解为数组$arr。

【讨论】:

  • 就我而言,objMessageIn.Body 没有\n 或\r。变量是在收到短信后通过触发器创建的。 url = "localhost/reply.php?r=" & 现在 & "&msg=" & objMessageIn.Body
  • @AzharHanif 您需要对进入 PHP 的 url 进行编码。您可以在进入 PHP 之前使用 PHP 通过 urlencode() 执行此操作,或者您可以使用 JavaScript;见developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。如果您希望通过 url 传输某些字符,则必须对某些字符进行编码,而换行符 ("\n") 就是这样一个字符。
  • url = "localhost/reply.php?r="; & Now & "&msg=" & objMessageIn.Body 在 vbscript 中。我可以使用 server.URLencode 函数对其进行编码吗?
  • @Azhar Hanif 我上一次使用 vbscript 是在 1999 年。那时我知道 ASP 有办法对 url 进行 urlencode。刚才我使用 Google 4guysfromrolla.com/webtech/042601-1.shtml 找到了这个,所以在回答你的问题时,是的,我相信是的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 2010-12-21
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多