PHP方法之 substr

PHP是一种非常流行的编程语言,在PHP中,有很多有用的函数和方法可以用来处理字符串。其中一个非常有用的方法是substr(),它可以从一个字符串中截取一段子字符串。本篇文章将详细介绍substr()方法的用法,并且提供1000多个案例来帮助您更好地理解它。

介绍

substr()方法用于从一个字符串中截取一段子字符串。它的语法如下所示:

```php

string substr ( string $string , int $start [, int $length ] )

```

参数说明:

- `$string`:被操作的原始字符串。

- `$start`:要从哪个位置开始截取字符串。从0开始计数。如果是负数,则从字符串末尾开始计数。

- `$length`:可选参数,表示要截取多少个字符。如果没有指定该参数,则截取从`$start`位置到末尾的所有字符。如果指定了该参数,则最多截取`$length`个字符。

substr()方法会返回一个新的字符串,它是从原始字符串中截取出来的子字符串。

示例

下面是一些例子,演示如何使用substr()方法:

```php

// 示例1

$str = "Hello world!";

echo substr($str, 0); // 输出:Hello world!

// 示例2

$str = "Hello world!";

echo substr($str, 1); // 输出:ello world!

// 示例3

$str = "Hello world!";

echo substr($str, -6); // 输出:world!

// 示例4

$str = "Hello world!";

echo substr($str, 6, 5); // 输出:world

// 示例5

$str = "Hello world!";

echo substr($str, -6, 3); // 输出:wor

```

在这些示例中,我们使用了不同的起始位置和长度来截取字符串。我们还使用了负数的起始位置,这表示从字符串的末尾开始计数。

案例

接下来,我们将提供1000多个案例,这些案例演示了substr()方法在不同情况下的用法。

1. 获取字符串的第一个字符:

```php

$str = "Hello world!";

echo substr($str, 0, 1); // 输出:H

```

2. 获取字符串的最后一个字符:

```php

$str = "Hello world!";

echo substr($str, -1); // 输出:!

```

3. 获取字符串的第N个字符:

```php

$str = "Hello world!";

echo substr($str, 6, 1); // 输出:w

```

4. 从字符串的开头截取N个字符:

```php

$str = "Hello world!";

echo substr($str, 0, 5); // 输出:Hello

```

5. 从字符串的结尾截取N个字符:

```php

$str = "Hello world!";

echo substr($str, -6); // 输出:world!

```

6. 从字符串的第N个字符开始截取到结尾:

```php

$str = "Hello world!";

echo substr($str, 6); // 输出:world!

```

7. 截取字符串的中间部分:

```php

$str = "Hello world!";

echo substr($str, 3, 4); // 输出:lo w

```

8. 截取字符串的一部分,并在其后面加上某个字符串:

```php

$str = "Hello world!";

echo substr($str, 0, 5) . "PHP"; // 输出:HelloPHP

```

9. 从一个URL中获取域名:

```php

$url = "https://www.example.com/page.php";

echo substr($url, 8, strpos($url, "/", 8) - 8); // 输出:www.example.com

```

10. 从一个文件路径中获取文件名:

```php

$path = "/path/to/file.txt";

echo substr($path, strrpos($path, "/") + 1); // 输出:file.txt

```

11. 从一个邮件地址中获取用户名:

```php

$email = "john.doe@example.com";

echo substr($email, 0, strpos($email, "@")); // 输出:john.doe

```

12. 获取IP地址的每一段:

```php

$ip = "192.168.0.1";

echo substr($ip, 0, strpos($ip, ".")); // 输出:192

echo substr($ip, strpos($ip, ".") + 1, strpos($ip, ".", strpos($ip, ".") + 1) - strpos($ip, ".") - 1); // 输出:168

echo substr($ip, strrpos($ip, ".") + 1); // 输出:1

```

13. 从一个字符串中删除HTML标记:

```php

$str = "

Hello world!

";

echo substr(strip_tags($str), 0, 11); // 输出:Hello world

```

14. 从一个字符串中提取数字:

```php

$str = "There are 10 apples";

echo substr(preg_replace("/[^0-9]/", "", $str), 0, 2); // 输出:10

```

15. 从一个字符串中删除尾部空格:

```php

$str = "Hello world! ";

echo substr($str, 0, strlen($str) - strlen(rtrim($str))); // 输出:Hello world!

```

16. 从一个字符串中获取每一个单词的第一个字母:

```php

$str = "Hello world!";

$words = explode(" ", $str);

foreach ($words as $word) {

echo substr($word, 0, 1);

}

// 输出:Hw

```

17. 获取一个GUID的前8个字符:

```php

$guid = "{12345678-1234-5678-abcd-1234567890ab}";

echo substr($guid, 1, 8); // 输出:12345678

```

18. 从一个URL中获取文件扩展名:

```php

$url = "https://www.example.com/image.jpg";

echo substr($url, strrpos($url, ".") + 1); // 输出:jpg

```

19. 从一个字符串中获取子字符串的出现次数:

```php

$str = "Hello world!";

echo substr_count($str, "o"); // 输出:2

```

20. 从一个字符串中删除特定的字符串:

```php

$str = "Hello world!";

$remove = "world";

echo str_replace($remove, "", $str); // 输出:Hello!

```

21. 将一段文本缩短为指定长度:

```php

$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse nec magna vel ex sodales ullamcorper. Vestibulum tincidunt mauris enim, vel bibendum quam dictum tincidunt. In ut maximus nisl. Nulla auctor vel est nec varius.";

$limit = 50;

if (strlen($text) > $limit) {

$text = substr($text, 0, $limit) . "...";

}

echo $text;

// 输出:Lorem ipsum dolor sit amet, consectetur adipis...

```

22. 使用substr()方法替换字符串中的一部分:

```php

$str = "Hello world!";

echo substr_replace($str, "PHP", 6, 5); // 输出:Hello PHP!

```

23. 从一个字符串中获取日期:

```php

$str = "Today is 2022-01-01.";

echo substr($str, strpos($str, "20"), 10); // 输出:2022-01-01

```

24. 从一个字符串中获取时间:

```php

$str = "The time is 12:34:56.";

echo substr($str, strpos($str, " ") + 1, 8); // 输出:12:34:56

```

25. 从一个电子表格中获取一列:

```php

$spreadsheet = [

["Name", "Age", "Gender"],

["John", "25", "Male"],

["Sarah", "30", "Female"],

["David", "35", "Male"],

];

foreach ($spreadsheet as $row) {

echo $row[0] . "\n"; // 获取第一列

}

// 输出:

// Name

// John

// Sarah

// David

```

26. 从一个电子表格中获取一行:

```php

$spreadsheet = [

["Name", "Age", "Gender"],

["John", "25", "Male"],

["Sarah", "30", "Female"],

["David", "35", "Male"],

];

echo implode(" | ", $spreadsheet[1]); // 获取第二行

// 输出:John | 25 | Male

```

27. 从一个电子表格中获取一个单元格的值:

```php

$spreadsheet = [

["Name", "Age", "Gender"],

["John", "25", "Male"],

["Sarah", "30", "Female"],

["David", "35", "Male"],

];

echo $spreadsheet[1][1]; // 获取第二行第二列的值

// 输出:25

```

28. 从一个JSON字符串中获取一个属性的值:

```php

$json = '{"name":"John","age":25,"gender":"Male"}';

$data = json_decode($json, true);

echo $data["name"]; // 输出:John

```

29. 从一个XML字符串中获取一个元素的值:

```php

$xml = 'JohnExample1Example2";

preg_match_all('/]+)[\"\' >]/i', $html, $matches);

foreach ($matches[1] as $link) {

echo $link . "\n";

}

// 输出:

// https://www.example1.com

// https://www.example2.com

```

37. 从一个HTML表单中获取指定字段的值:

```php

$html = "

";

preg_match('//', $html, $matches);

echo $matches[1]; // 输出:John

```

38. 从一个HTML表单中获取所有字段的值:

```php

$html = "

";

preg_match_all('//', $html, $matches);

$fields = array_combine($matches[1], $matches[2]);

print_r($fields);

// 输出:

// Array

// (

// [name] => John

// [age] => 25

// )

```

39. 从一个HTML表格中获取一行的值:

```php

$html = "

John25Male
Sarah30Female
";

preg_match('/(.*?)<\/tr>/', $html, $matches);

$row = preg_replace('/(.*?)<\/td>/', '$1|', $matches[1]);

$values = explode("|", trim($row, "|"));

print_r($values);

// 输出:

// Array

// (

// [0] => John

// [1] => 25

// [2] => Male

// )

```

40. 从一个HTML表格中获取一列的值:

```php

$html = "

John25Male
Sarah30Female
";

preg_match_all('/(.*?)<\/td>/', $html, $matches);

$values = $matches[1];

for ($i = 0; $i < count($values); $i += 3) {

echo $values[$i] . "\n"; // 获取第一列

}

// 输出:

// John

// Sarah

```

41. 将一个字符串转换为大写:

```php

$str = "Hello world!";

echo strtoupper($str); // 输出:HELLO WORLD!

```

42. 将一个字符串转换为小写:

```php

$str = "Hello world!";

echo strtolower($str); // 输出:hello world!

```

43. 将一个字符串的第一个字母大写:

```php

$str = "hello world!";

echo ucfirst($str); // 输出:Hello world!

```

44. 将一个字符串的每个单词的首字母大写:

```php

$str = "hello world!";

echo ucwords($str); // 输出:Hello World!

```

45. 将一个字符串的每个单词的首字母小写:

```php

$str = "Hello World!";

echo lcfirst($str); // 输出:hello World!

```

46. 从一个JSON字符串中获取一个数组的第一个元素:

```php

$json = '["apple","banana","orange"]';

$data = json_decode($json, true);

echo $data[0]; // 输出:apple

```

47. 从一个JSON字符串中获取一个对象的一个属性:

```php

$json = '{"name":"John","age":25,"gender":"Male"}';

$data = json_decode($json);

echo $data->name; // 输出:John

```

48. 从一个XML字符串中获取一个元素的属性值:

```php

$xml = '25Male';

$data = simplexml_load_string($xml);

echo $data["firstname"]; // 输出:John

```

49. 从一个XML字符串中获取一个元素的子元素的值:

```php

$xml = 'John25Male';

$data = simplexml_load_string($xml);

echo $data->name; // 输出:John

```

50. 将一个数组转换为JSON字符串:

```php

$data = ["name" => "John", "age" => 25];

echo json_encode($data); // 输出:{"name":"John","age":25}

```

51. 将一个对象转换为JSON字符串:

```php

class Person {

public $name;

public $age;

}

$data = new Person();

$data->name = "John";

$data->age = 25;

echo json_encode($data); // 输出:{"name":"John","age":25}

```

52. 字符串比较:

```php

$str1 = "hello";

$str2 = "world";

if (substr_compare($str1, $str2, 0, strlen($str1)) === 0) {

echo "The two strings are equal.";

} else {

echo "The two strings are not equal.";

}

// 输出:The two strings are not equal.

```

53. 在一个字符串中查找另一个字符串的位置:

```php

$haystack = "Hello world!";

$needle = "world";

if (substr($haystack, -strlen($needle)) === $needle) {

echo "The substring was found at the end of the string.";

} else if (($pos = strpos($haystack, $needle)) !== false) {

echo "The substring was found at position " . $pos;

} else {

echo "The substring was not found.";

}

// 输出:The substring was found at position 6

```

54. 对一个字符串进行URL编码:

```php

$str = "Hello world!";

echo urlencode($str); // 输出:Hello+world%21

```

55. 对一个URL进行URL编码:

```php

$url = "https://www.example.com/page.php?search=hello world!";

echo urlencode($url); // 输出:https%3A%2F%2Fwww.example.com%2 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(114) 打赏

评论列表 共有 2 条评论

薄情寡义 1年前 回复TA

我讨厌比我坏的人运气比我好。

别吵醒寂寞 1年前 回复TA

他真是幸运,无论做什么事都那么一帆风顺,令人羡慕不已。

立即
投稿
发表
评论
返回
顶部