2013-05-02 69 views

回答

2

你也可以这样做:

$str = 'some_long_string'; 
echo explode('_', $str, 2)[1]; // long_string 
-1

假设我想选择所有的字符在我的字符串中第一个下划线的权利:

$stringLength = strlen($string_I_want_to_strip); 
$limiterPos = strpos($string_I_want_to_strip, "_"); 
$reversePos = $limiterPos - $stringLength + 1; 
$charsToTheRight = substr($string_I_want_to_strip, $reversePos, $limiterPos); 
+2

这对我的测试用例不起作用:http://viper-7.com/bbzfWL – nickb 2013-05-02 21:54:16

+0

我已经将它投入生产,因为它完全符合我的要求......它选择分隔符右侧的所有字符。然而,更好的方法是“爆炸()”。 – carter 2013-05-03 02:02:46

3
// find the position of the first occurrence of the char you're looking for 
$pos = strpos($string, $char); 

// cut the string from that point 
$result = substr($string, $pos + 1); 
+1

可能希望在$ pos + 1上获取子字符以获得该字符的正确值。 – 2013-05-02 22:00:36

+0

是的,很好;; – 2013-05-02 22:01:55

+0

现在用于多字节字符! UTF-8获胜! – Sven 2013-05-02 22:06:36

1

使用strpos找到位置的特定字符,然后使用substr来抓取它后面的所有字符。

2

我不知道这会满足您的需要,但:

$string = explode(',','I dont know how to, get this part of the text'); 

岂不$字符串[1]永远是分隔符的右侧?除非你在字符串中有多个相同的字符......如果这不是你要找的东西,那很抱歉。

+0

是的!你是对的!这正是我所期待的。奇怪我找不到我的搜索。 :) – carter 2013-05-03 02:01:12

+0

当您在字符串中有多个分隔符时,将失败。你需要指定限制参数[就像我在我的答案中所做的那样](http://stackoverflow.com/a/16348360/862594)。 – nickb 2013-05-03 02:43:14

1

只需使用strstr

$data = 'Some#Ramdom#String'; 
$find = "#" ; 
$string = substr(strstr($data,$find),strlen($find)); 
echo $string; 

输出

Ramdom#String 
1

你必须使用SUBSTR带有负开始整数

$startingCharacter = 'i'; 
$searchString = 'my test string'; 
$positionFromEnd = strlen($searchString) 
    - strpos($searchString, $startingCharacter); 
$result = substr($searchString, ($positionFromEnd)*-1); 

或函数中:

function strRightFromChar($char, $string) { 
    $positionFromEnd = strlen($string) - strpos($string, $char); 
    $result = substr($string, ($positionFromEnd)*-1); 
    return $result; 
} 
echo strRightFromChar('te', 'my test string'); 

(注意,你也可以搜索一组字符)

相关问题