PHP bölünmüş alternatif mi?


92

PHP bana bölünmenin kullanımdan kaldırıldığını söylüyor, kullanmam gereken alternatif yöntem nedir?

Yanıtlar:


131

explodebir alternatiftir. Ancak, normal bir ifadeye bölmek istiyorsanız , alternatif bunun preg_splityerine olur.


15
Katılmıyorum - explodealternatif değildir, çünkü aynı işlevi yerine getirmez split, yani bir dizeyi normal bir ifadeyle bölmek . Bu amaçla kullanın preg_split.
nickf

1
@nickf: Bu haklı olarak, bunu başlangıçta eklemeliydim. Teşekkürler
Sarfraz

Çeşitli dillerde, splityöntem her zaman normal ifadeleri kabul etmez. .NET, Python'da, String.Split()/ str.split()yöntemleri yalnızca sabit, değişmez bir dizeyi iğne olarak kabul eder. Dolayısıyla explodedoğrudur. Java, JavaScript, Ruby'den gelenler preg_splitiçin çözüm ortaya çıkabilir.
Wiktor Stribiżew

Visual Basic .NET'in String.Split () ile uyumludur. Nice
Md Ashraful Islam

22

splitPOSIX normal ifadelerini kullanan işlevler ailesinin bir parçası olduğu için kullanımdan kaldırılmıştır; bu ailenin tamamı, PCRE ( preg_*) işlevlerinin lehine kullanımdan kaldırılmıştır .

Normal ifade işlevselliğine ihtiyacınız yoksa, o zaman explodeçok iyi bir seçimdir (ve splitkullanımdan kaldırılmamış olsa bile tavsiye edilirdi), diğer yandan normal ifadeleri kullanmanız gerekiyorsa, PCRE alternate basitçe olacaktır preg_split.


16
  • preg_split normal ifadelere göre bölmeniz gerekiyorsa.
  • str_split karakterlere göre bölmeniz gerekiyorsa.
  • explode basit bir şeyle ayrılmanız gerekirse.

Ayrıca gelecekte, eğer bir şey kullanımdan kaldırılırsa PHP'nin sizden ne kullanmanızı istediğini bilmek isterseniz, her zaman kılavuzdaki işlevi kontrol edebilirsiniz ve size alternatifler söyleyecektir.


7

Burada ondan preg_split();uzak olanı temizlemek istiyorum, ancak explode();benzer şekilde kullanılabilirsplit();

aşağıdaki karşılaştırma split();ve explode();kullanım

Split () nasıl kullanıldı

<?php

$date = "04/30/1973";
list($month, $day, $year) = split('[/.-]', $date);
echo $month; // foo
echo $day; // *
echo $year;

?>

URL: http://php.net/manual/en/function.split.php

Explode () nasıl kullanılabilir?

<?php

$data = "04/30/1973";
list($month, $day, $year) = explode("/", $data);
echo $month; // foo
echo $day; // *
echo $year;

?>

URL: http://php.net/manual/en/function.explode.php

İşte nasıl kullanabileceğimiz :)


2

Bunun yerine daha kolay olan preg_match işlevini kullanabilirsiniz, diğerlerinden daha iyi ve daha hızlıdır.

$var = "<tag>Get this var</tag>";
preg_match("/<tag>(.*)<\/tag>/", $var , $new_var);
echo $new_var['1']; 

Çıktı: Get this var



0

Bir dizeyi kelimelere bölmek istiyorsanız, explode () veya str_word_count () kullanabilirsiniz.


0

Aynı sorunu yaşadım, ancak kodum hem PHP 5 hem de PHP 7'de çalışmalı ..

İşte bunu çözen kod parçam .. "/. -" sınırlayıcılardan biriyle dmY formatında bir tarih girin.

<?php
function DateToEN($date){
  if ($date!=""){
    list($d, $m, $y) = function_exists("split") ?  split("[/.-]", $date) : preg_split("/[\/\.\-]+/", $date);
    return $y."-".$m."-".$d;
  }else{
    return false;
  }
}
?>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.