İki karakter arasındaki dize çekin bir PHP işlevi var mı?

2 Cevap

Iki karakter arasındaki dize kapmak bir PHP fonksiyonu var. Örneğin, ben ve yüzde dolar sembolü arasında ne olduğunu bilmek istiyorum:

% BURAYA $

Bunun için fonksiyonu nedir?

2 Cevap

Sen bir regex ile bunu yapabilir:

$string = 'test%HERE$glop';

$m = array();
if (preg_match('/%(.*?)\$/', $string, $m)) {
  var_dump($m[1]);
}

Alacak:

string 'HERE' (length=4)


Couple of notes :

  • Özel bir anlamı vardır gibi $ desen, kaçan edildiğini (end of string)
  • You want to match everything : .*
    • Bu % ve $ aramda
    • Ama olmayan gready modda: .*?
  • Dolayısıyla () bunu Civarı - Ve sen yakalanan istiyorum.

Bunu almak için normal bir ifade kullanabilirsiniz:

preg_match('/%([^$]*)\\$/', $str, $match)

Bir maç bulundu ise, $match[0] tüm maç içerecektir ve % ve $ arasındaki $match[1] metin.

Ama aynı zamanda strpos and search for the % ve ilk $ bundan sonra gibi temel dize işlevlerini kullanabilirsiniz:

if (($start = strpos($str, '%')) !== false && ($end = strpos($str, '$', $start)) !== false) {
    $match = substr($str, $start, $end-$start);
}