Bird
Raised Fist0
PHPprogramming~5 mins

Preg_split for splitting in PHP

Choose your learning style10 modes available
Introduction
Preg_split helps you break a string into parts using patterns, not just simple characters. It is useful when you want to split text by complex rules.
You want to split a sentence by spaces, commas, or dots all at once.
You need to separate words but ignore multiple spaces or tabs.
You want to split a string by any number of digits or special characters.
You want to split text by a pattern like email addresses or hashtags.
You want to split a string but keep some parts or remove empty pieces.
Syntax
PHP
preg_split(string $pattern, string $subject, int $limit = -1, int $flags = 0): array
The $pattern is a regular expression enclosed in delimiters, like '/pattern/'.
The $limit controls how many pieces you get; -1 means no limit.
Examples
Splits the string by commas into an array of fruits.
PHP
$parts = preg_split('/,/', 'apple,banana,orange');
Splits by one or more spaces, so multiple spaces count as one separator.
PHP
$parts = preg_split('/\s+/', 'one  two   three');
Splits by comma or dot characters.
PHP
$parts = preg_split('/[,.]/', 'red,green.orange');
Splits by one or more digits.
PHP
$parts = preg_split('/\d+/', 'abc123def456ghi');
Sample Program
This program splits the string by commas, semicolons, or dots, ignoring spaces around them, and prints each fruit on a new line.
PHP
<?php
$text = "apple, banana; orange.pear";
// Split by comma, semicolon, or dot with optional spaces
$parts = preg_split('/\s*[,;.]+\s*/', $text);
foreach ($parts as $part) {
    echo $part . "\n";
}
?>
OutputSuccess
Important Notes
preg_split uses regular expressions, so learning simple regex helps a lot.
You can use flags like PREG_SPLIT_NO_EMPTY to skip empty parts in the result.
Remember to escape special characters in the pattern if needed.
Summary
preg_split splits strings using patterns, not just fixed characters.
It is useful for complex splitting rules like multiple separators or spaces.
You get an array of parts after splitting, which you can use in your program.

Practice

(1/5)
1. What does the PHP function preg_split do?
easy
A. Counts the number of words in a string.
B. Joins array elements into a string.
C. Replaces parts of a string matching a pattern.
D. Splits a string into parts using a regular expression pattern.

Solution

  1. Step 1: Understand the function purpose

    preg_split is designed to split strings based on patterns, not fixed characters.
  2. Step 2: Compare options with function behavior

    Only Splits a string into parts using a regular expression pattern. describes splitting using a regular expression pattern, which matches preg_split functionality.
  3. Final Answer:

    Splits a string into parts using a regular expression pattern. -> Option D
  4. Quick Check:

    preg_split splits string by regex pattern = A [OK]
Hint: Remember: preg_split uses regex to split strings [OK]
Common Mistakes:
  • Confusing preg_split with implode or join functions
  • Thinking preg_split replaces text instead of splitting
  • Assuming preg_split counts words
2. Which of the following is the correct syntax to split a string by commas using preg_split?
easy
A. preg_split('/,/', $string);
B. preg_split(',', $string);
C. preg_split($string, '/,/');
D. preg_split($string, ',');

Solution

  1. Step 1: Identify correct parameter order

    The first parameter of preg_split is the regex pattern as a string, the second is the input string.
  2. Step 2: Check regex pattern format

    The pattern must be enclosed in delimiters like slashes /, /. preg_split('/,/', $string); uses this correctly.
  3. Final Answer:

    preg_split('/,/', $string); -> Option A
  4. Quick Check:

    Pattern first with slashes, then string = B [OK]
Hint: Pattern goes first with slashes, then the string [OK]
Common Mistakes:
  • Omitting regex delimiters like slashes
  • Swapping the order of parameters
  • Using plain string instead of regex pattern
3. What is the output of the following PHP code?
$text = "apple,banana;orange|grape";
$result = preg_split('/[,;|]/', $text);
print_r($result);
medium
A. ["apple,banana;orange|grape"]
B. ["apple", "banana;orange|grape"]
C. ["apple", "banana", "orange", "grape"]
D. ["apple", "banana", "orange|grape"]

Solution

  1. Step 1: Understand the regex pattern

    The pattern /[,;|]/ matches any comma, semicolon, or pipe character as separators.
  2. Step 2: Split the string by these separators

    The string splits at each comma, semicolon, and pipe, resulting in four parts: "apple", "banana", "orange", "grape".
  3. Final Answer:

    ["apple", "banana", "orange", "grape"] -> Option C
  4. Quick Check:

    Split by , ; | = ["apple", "banana", "orange", "grape"] [OK]
Hint: Regex with multiple separators splits into all parts [OK]
Common Mistakes:
  • Not recognizing all separators in regex
  • Expecting only comma to split
  • Confusing output format with string instead of array
4. The following code is intended to split a string by spaces, but it causes an error. What is the problem?
$str = "one two three";
$parts = preg_split(' ', $str);
print_r($parts);
medium
A. The print_r function is used incorrectly.
B. The pattern is missing regex delimiters.
C. preg_split cannot split by spaces.
D. The string variable is empty.

Solution

  1. Step 1: Check the pattern parameter

    The pattern passed is a plain space character without regex delimiters, which is invalid syntax for preg_split.
  2. Step 2: Correct pattern format

    Regex patterns must be enclosed in delimiters like slashes, e.g., '/ /' to match a space.
  3. Final Answer:

    The pattern is missing regex delimiters. -> Option B
  4. Quick Check:

    Regex pattern needs delimiters like slashes [OK]
Hint: Always wrap regex pattern in delimiters like slashes [OK]
Common Mistakes:
  • Using plain string without delimiters as pattern
  • Assuming preg_split works like explode for spaces
  • Blaming print_r for output issues
5. You want to split a string by any number of spaces or commas, but ignore empty parts in the result. Which preg_split call achieves this?
hard
A. preg_split('/[ ,]+/', $string, -1, PREG_SPLIT_NO_EMPTY);
B. preg_split('/[ ,]/', $string);
C. preg_split('/[ ,]+/', $string);
D. preg_split('/[ ,]+/', $string, 0);

Solution

  1. Step 1: Understand the pattern and flags

    The pattern /[ ,]+/ matches one or more spaces or commas, so it splits on any group of these separators.
  2. Step 2: Use flag to remove empty parts

    The flag PREG_SPLIT_NO_EMPTY tells preg_split to exclude empty strings from the result array.
  3. Step 3: Check other options

    preg_split('/[ ,]/', $string); splits on single separators but may leave empty parts. preg_split('/[ ,]+/', $string); does not remove empty parts. preg_split('/[ ,]+/', $string, 0); uses 0 as limit which is invalid.
  4. Final Answer:

    preg_split('/[ ,]+/', $string, -1, PREG_SPLIT_NO_EMPTY); -> Option A
  5. Quick Check:

    Use + for multiple separators and NO_EMPTY flag [OK]
Hint: Use + in pattern and PREG_SPLIT_NO_EMPTY flag [OK]
Common Mistakes:
  • Not using + to match multiple separators
  • Forgetting PREG_SPLIT_NO_EMPTY to remove blanks
  • Using invalid limit parameter
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard