嗨我需要删除'_'中的所有字符,直到字符串结束.
我尝试过:
$string = 'merry_christmas';
$string = preg_replace('/_*/','',$string);
echo $string; // I need it to be: 'merry'
Run Code Online (Sandbox Code Playgroud)
......但是不.
这个想法是删除下划线字符'_'和右边的所有字符.
谢谢
Eri*_*rik 11
以下会更快;
$str = 'merry_christmas';
$str = substr($str, 0, strpos($str, '_'));
Run Code Online (Sandbox Code Playgroud)
该模式/_*/匹配零个或多个连续_.所以它会merry_christmas变成merrychristmas.
你需要的是/_.*/s匹配一个_后跟零个或多个任意字符(注意s修饰符):
$string = preg_replace('/_.*/s', '', $string);
Run Code Online (Sandbox Code Playgroud)
但正如其他人已经提到的那样,使用正则表达式可能不是最好的方法.还要考虑使用基本字符串操作的其他提到的解决方 并非所有这些都像使用上面的正则表达式一样可读(更重要的是:如果_字符串中没有,它们可能会返回意外的结果).但在某些情况下它们可能会更快.
| 归档时间: |
|
| 查看次数: |
22977 次 |
| 最近记录: |