2012-12-29 45 views
1

昨天我問了一個問題,得到了幾個人的高度回答(謝謝)。PHP - 我如何在它之前提取一個子字符串+ X個字符?

新的問題:)

我想提取字符串中的唯一子,也可拍攝人物的X號之前。有沒有任何功能允許這個?


我剛剛發現strrpos() - 這可能會這樣做。

+0

鬼鬼祟祟的preg_split,但看起來不像是我可以「倒退」來自給定位置的X個角色。有沒有切和乾的功能來做到這一點? –

回答

1

我不認爲有一個內置的做到這一點,但是這應該做的伎倆:

function subbef($str, $sub, $bef) 
{ 
    $pos = strpos($str, $sub); 
    if ($pos === false || $pos < $bef) { 
     return false; 
    } 
    return substr($str, $pos - $bef, strlen($sub) + $bef); 
} 

用法是這樣的:

subbef('test string here', 'string', 3); //"st string" 
+0

謝謝!上帝你們鄉親很快:) –

1

,也可以通過正則表達式做到這一點:

<?php 
function get($needle, $haystack, $before){ 
    preg_match($v="/.{".$before."}$needle/", $haystack, $matches); 
    return $matches[0]; 
} 

echo get("hello", "I just want to say hello bobby!", 3); 
+0

謝謝 - 這個作品太:) :) –

+0

如果'needle'包含特殊字符?我會建議'preg_quote',但正則表達式看起來像是從這裏開始的矯枉過正:)。 – Corbin

相關問題