Substring extraction helps you get a smaller part of a bigger text. It is like cutting out a piece of a sentence you want to use.
Substring extraction in PHP
<?php // Extract substring from a string $substring = substr($string, $start, $length = null); ?>
$string is the original text.
$start is where to start cutting (0 means start of string).
$length is how many characters to take (optional).
<?php $text = "Hello World!"; $part = substr($text, 6, 5); echo $part; // Outputs: World ?>
<?php $text = "Hello World!"; $part = substr($text, 6); echo $part; // Outputs: World! ?>
<?php $text = "Hello"; $part = substr($text, 0, 10); echo $part; // Outputs: Hello ?>
<?php $text = "Hello"; $part = substr($text, -3, 2); echo $part; // Outputs: ll ?>
This program shows different ways to get parts of a string using substr. It prints the original text, then extracts a small word, a part from a position to the end, the last 11 characters, and tries to extract more characters than the string length.
<?php // Original string $full_text = "Learning PHP substring extraction."; // Show original string echo "Original text: $full_text\n"; // Extract 'PHP' from the string $extracted_part = substr($full_text, 9, 3); echo "Extracted part: $extracted_part\n"; // Extract from position 9 to end $extracted_to_end = substr($full_text, 9); echo "From position 9 to end: $extracted_to_end\n"; // Extract last 11 characters $last_eleven = substr($full_text, -11); echo "Last 11 characters: $last_eleven\n"; // Extract with length longer than string $long_extract = substr($full_text, 0, 100); echo "Long extract: $long_extract\n"; ?>
Time complexity is O(n) where n is the length of the substring extracted.
Space complexity is O(n) for the new substring created.
Common mistake: forgetting that string positions start at 0, so counting starts from zero.
Use substring extraction when you need a specific part of text. For splitting by a character, consider explode() instead.
Substring extraction gets a smaller piece from a bigger string.
Use substr(string, start, length) to cut out the part you want.
Start counts from zero, and length is optional to go till the end.
Practice
substr($text, 2, 3) do?Solution
Step 1: Understand substr parameters
The first parameter is the string, the second is the start index (0-based), and the third is the length of substring.Step 2: Apply to given function
Starting at index 2 means the third character, and length 3 means extract 3 characters from there.Final Answer:
Extracts 3 characters from $text starting at index 2 -> Option CQuick Check:
substr(string, 2, 3) = 3 chars from index 2 [OK]
- Confusing start index with length
- Thinking start counts from 1 instead of 0
- Assuming length is mandatory
$str starting at position 4 with length 5 in PHP?Solution
Step 1: Recall substr syntax
substr(string, start, length) extracts substring starting at 'start' index with 'length' characters.Step 2: Match parameters to question
Start is 4, length is 5, so substr($str, 4, 5) is correct syntax.Final Answer:
substr($str, 4, 5); -> Option BQuick Check:
substr($str, 4, 5) = correct syntax [OK]
- Swapping start and length values
- Omitting length when needed
- Using 1-based start index
$text = "Hello World!"; echo substr($text, 6, 5);
Solution
Step 1: Identify substring start and length
Start index is 6 (0-based), length is 5 characters.Step 2: Extract substring from "Hello World!"
Index 6 is 'W', next 5 chars are 'World'.Final Answer:
World -> Option AQuick Check:
substr("Hello World!", 6, 5) = "World" [OK]
- Including the exclamation mark mistakenly
- Starting count from 1 instead of 0
- Confusing length with end index
$word = "concatenate"; echo substr($word, 3, 4);
Solution
Step 1: Locate substring "cat" in "concatenate"
"cat" starts at index 3: c(3), a(4), t(5).Step 2: Check length parameter
Length 4 extracts "cate" (4 chars), but "cat" is only 3 chars, so length should be 3.Final Answer:
The length parameter is too long; it should be 3 -> Option AQuick Check:
substr("concatenate", 3, 3) = "cat" [OK]
- Using wrong start index
- Assuming substr auto-trims extra chars
- Thinking substr can't extract middle parts
$data = "user:john;id:12345;role:admin";. How do you extract the user name "john" using substr and strpos functions in PHP?Solution
Step 1: Find start position of username
Use strpos($data, ':') to find colon after "user", add 1 to start after colon.Step 2: Find length of username substring
Find position of first semicolon with strpos($data, ';'), subtract start position and 1 to get length.Step 3: Use substr with calculated start and length
substr($data, start, length) extracts "john" correctly.Final Answer:
substr($data, strpos($data, ':') + 1, strpos($data, ';') - strpos($data, ':') - 1); -> Option DQuick Check:
Use strpos to find delimiters, substr extracts between them [OK]
- Hardcoding start and length without dynamic positions
- Using wrong delimiter positions
- Extracting wrong substring part
Ready to prove it?
Pass the test and this pattern moves unknown
