Обрезать строку

McSeem7

Новичок
Имеем строку:
zodiac=3 img=26 gamecity=Sandcity gamecity_url=
нужно вырезать Sandcity

сейчас вот так:

PHP:
    $s1 = next(explode('gamecity=', $htmls));
    $text1 = "$s1";
    function max_word1($text1, $counttext1 = 50, $sep1 = ' ') {
     
        $words1 = preg_split('/ /', $text1);
     
        if(count($words1)>$counttext1) $text1 = join($sep1, array_slice($words1, 0, $counttext1));
     
        return $text1.' ';
     
    }
    echo max_word1($text1,2);
выводятся слова до второго пробела, это значит что если вместо Sandcity будет например Demons City (2 слова) все будет нормально, а при Sandcity(1 слово) продолжает строку и выводит Sandcity gamecity_url=, а нам нужно только Sandcity
*вместо слова Sandcity может быть два слова, три слова
 

Baton

Новичок
Объясняете Вы плохо. Если я правильно понял то Вам нужно вот это:

PHP:
function getGameCity($str){
   $res = '';
   $length = strlen($str);
   if ($length) {
      $start = strpos($str, 'gamecity=')+9;
      $stop = strpos($str, 'gamecity_url=')-1;
      $res = $start !== false && $stop !== false ? substr($str, $start, -($length - $stop)) : '';
   }
   return $res;
}

echo getGameCity('zodiac=3 img=26 gamecity=Sandcity gamecity_url=');//Sandcity
echo getGameCity('zodiac=3 img=26 gamecity=Demons City gamecity_url=');//Demons City
echo getGameCity('zodiac=3 img=26 gamecity=Odintsovo Evil City gamecity_url=');//Odintsovo Evil City
А вообще я бы очень рекомендовал Вам вместо пробелов между переменными использовать другой символ, лучше вот этот '&':

zodiac=3&img=26&gamecity=Sandcity&gamecity_url=

Это исключит коллизии с пробелом и можно будет использовать другой более надежный алгоритм поиска.

ЗЫ: хотя если в названии города теоретически может повстречаться и этот символ '&' , ну типа gamecity=hell&black, то лучше выбрать другой символ для разделения.
 
Сверху