PHP 분할 대안?


92

PHP는 분할이 더 이상 사용되지 않는다고 알려줍니다. 대체 방법은 무엇입니까?

답변:


131

explode대안입니다. 그러나 정규 표현식을 통해 분할하려는 경우 대안은 preg_split대신입니다.


15
동의 explode하지 않습니다. split, 즉 정규식 으로 문자열을 분할하는 것과 같은 기능을 수행하지 않기 때문에 대안이 아닙니다 . 이를 위해 preg_split.
nickf

1
@nickf : 그게 맞습니다. 처음에 그것을 추가 했어야했습니다. 감사합니다
Sarfraz

다양한 언어에서 split메서드가 항상 정규식을 받아들이는 것은 아닙니다. .NET, Python에서 String.Split()/ str.split()메서드는 고정 된 리터럴 문자열 만 바늘로 받아들입니다. 따라서 explode정확합니다. Java, JavaScript, Ruby에서 오는 사람들에게는 preg_split해결책이 될 수 있습니다.
Wiktor Stribiżew

Visual Basic .NET의 String.Split ()과 호환됩니다. 니스
Md Ashraful Islam

22

splitPOSIX 정규식을 사용하는 함수 패밀리의 일부이기 때문에 더 이상 사용되지 않습니다. PCRE ( preg_*) 기능 을 위해 전체 제품군이 더 이상 사용되지 않습니다 .

정규식 기능이 필요하지 않은 경우 explode매우 좋은 선택입니다 ( split사용되지 않는 경우에도 권장 됨 ). 반면에 정규식을 사용해야하는 경우 PCRE 대체는 간단 preg_split합니다.


16
  • preg_split 정규식으로 분할해야하는 경우.
  • str_split 문자로 분할해야하는 경우.
  • explode 간단한 것으로 나눌 필요가 있다면.

또한 미래를 위해 어떤 것이 더 이상 사용되지 않는 경우 PHP가 사용하기를 원하는 것이 무엇인지 알고 싶다면 항상 매뉴얼 의 기능 을 확인하고 대안을 알려줄 것입니다.


7

여기에서 preg_split();멀리 떨어져 있지만 다음 explode();과 비슷한 방식으로 사용할 수 있음 을 지우고 싶습니다.split();

다음은 split();explode();사용법 의 비교입니다.

split () 사용 방법

<?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 () 사용 방법

<?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

사용 방법은 다음과 같습니다. :)


2

대신 더 쉬운 함수 preg_match를 사용할 수 있습니다. 다른 모든 것보다 더 좋고 빠릅니다.

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

산출: Get this var



0

문자열을 단어로 분할하려면 explode () 또는 str_word_count ()를 사용할 수 있습니다.


0

같은 문제가 있었지만 내 코드는 PHP 5와 PHP 7에서 모두 작동해야합니다.

이 문제를 해결 한 코드가 여기 있습니다 .. 구분 기호 "/.-"중 하나를 사용하여 dmY 형식으로 날짜를 입력하십시오.

<?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;
  }
}
?>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.