PHP子字符串在两个特定字符之间

时间:2017-10-18 19:14:35

标签: php

我有以下代码,它给出了我最初需要的内容(字符串=中第一个$data之后的大写单词:

if (($pos = strpos($data, "=")) !== FALSE) { 
    $whatIWant = ucwords(substr($data, $pos+1)); 
}

我现在需要做的是完全相同的事情,但在同一个字符串(&)中忽略(包括)第一个$data后的任何内容。

我的PHP很弱,有人可以告诉我如何更新上面这样做吗?我还没有找到答案,但如果我错过了,请告诉我。

示例字符串:

  

目的地=公寓+铁力士+度假村+ Wohnung + 721&安培; hotelid = 0123454656

     

目的地=出租公寓+ + +门迪的Eder + - +圣让&安培; hotelid = 01234

     

目的地=三卧室+假日+首页+ +在&Olofstrom的放大器; hotelid = 98

3 个答案:

答案 0 :(得分:4)

如果此查询字符串来自用于访问该网页的网址(正如您使用$_SERVER['QUERY_STRING']的评论所示),那么只需使用$_GET Superglobal

echo ucwords($_GET['destination']);

如果查询字符串来自其他地方,那么有一个工具,parse_str

parse_str($data, $result);

您的第一个示例查询字符串产生:

Array
(
    [destination] => Apartment TITLIS Resort Wohnung 721
    [hotelid] => 0123454656
)

那么就是:

echo ucwords($result['destination']);

答案 1 :(得分:2)

您的解决方案:您可以在此处查看:https://3v4l.org/ohgvE

<?php 
$data = "destination=Apartment+TITLIS+Resort+Wohnung+721&hotelid=0123454656";
if (($pos = strpos($data, "=")) !== FALSE) { 
    $whatIWant = ucwords(substr($data, $pos+1)); 
    $whatIWant = explode("&", $whatIWant); // creating array from string
    $whatIWant = $whatIWant[0]; // before & is first array element
    echo "Ans1: \n";
    echo $whatIWant;
    // Output: Apartment+TITLIS+Resort+Wohnung+721
    // if you want your output with & just add & 
    echo "\n\nAns2: \n";

    $whatIWant = $whatIWant."&";

    echo $whatIWant;
    // now Output iss: 
    // Apartment+TITLIS+Resort+Wohnung+721&
}

?>

答案 2 :(得分:1)

使用$_GET超全局是在PHP中获取GET参数的正确方法。

$_GET['destination']

将包含您的destination,并且已经对其进行了网址解码。

  

GET变量通过urldecode()传递。