Belirli bir karakteri php Döşeme dize

6 Cevap php

Belirli bir karakterden sonra bir dize kesmek için bir php string işlevi vardır. Ben php.net sitesinde bir göz vardı ve google arama yaptım ama bir şey bulamadı. Aklıma tek çözüm patlayabilir ve daha sonra dizinin ilk bölümünü kapmak oldu ama bu en zarif çözüm değil.

Örneğin

$string = "/gallery/image?a=b";
$string = imaginary_function($string,'?');
echo $string; //echoes "/gallery/image"

Does anyone know of a good cheat sheet for php string manipulation functions? Thanks

6 Cevap

Belki böyle bir şey:

$string = substr($string, 0, strpos($string, '?'));

Bu (yani hiçbir hata denetimi, vb) çok sağlam değil, ama sizin sorununuzu çözmeye yardımcı olabileceğini unutmayın.

strstr ve stristr fonksiyonları bir dize ilk geçtiği bulur ve (arama dizesi dahil) ondan sonra her şeyi döndürür. Ama sana besleme true üçüncü argüman olarak, bu arama dizesi önünde her şeyi geri getiriyor.

$string = strstr( $string, '?', true); # Returns /gallery/image

Maç bulunmazsa o FALSE döndürür yüzden böyle bir hata kontrolü yazabilirsiniz:

if( $path = strstr( $string, '?', true) ){
   # Do something
}
function imaginary_function($string, $char) {
  $index = strpos($char, $needle);
  if ($index === false) { return $string };

  return substr($string, 0, $index);
}

Dize düzenleme işlevlerini mükemmel bir resmi listesi mevcuttur here.

Bu yapmak için çalışıyoruz ne için overkill, ancak parçalar halinde bir URL parçalayın istiyorsanız, PHP işlevi parse_url deneyebilirsiniz. İşte PHP manual page bulunuyor.

Daha sonra elde edilen dizinin "yol" bölümünü isterdim.

Saf string fonksiyonları daha iyi performans verebilir rağmen, bu sadece bir dizi değil; Bir URI bulunuyor. Bu nedenle bu verileri işlemek için yapılmış bir işlevi kullanmak daha mantıklı:

echo parse_url("/gallery/image?a=b", PHP_URL_PATH);
// Output: /gallery/image