2016-09-20 92 views
0

在第一次出現像(1-9)之類的數字之前,我試圖刪除字符串中的所有數據可能是在函數中?在第一次出現數字之前刪除所有內容的PHP腳本

例如:

$value = removeEverythingBefore($value, '1-10'); 

所以,如果我有像「你好,我想統治世界100個小時左右」

我想這個找了好幾個第一次出現的一個測試是1並刪除它之前的所有內容。

離開我與100 hours or so

+0

你應該使用正則表達式。你可以使用'preg_match'或'preg_replace'。 – chris85

回答

0

如果你想就像你在你的文章中提到要調用的函數,你可以像下面的:

<?php 
function removeEverythingBefore($value, $pattern) { 
    preg_match($pattern, $value, $matches, PREG_OFFSET_CAPTURE); 
    $initialPosition = $matches[0][1]; 
    return substr($value, $initialPosition); 
} 

$value = "Hello I want to rule the world in 100 hours or so"; 
$value = removeEverythingBefore($value, '/[0-9]/'); 
echo $value; // prints 100 hours or so 

這樣,您就可以使用相同的功能,以藏漢匹配其他patters。

0

您可以使用preg_replace這與正則表達式/([a-z\s]*)(?=\d)/i這樣的:

$string = "Hello I want to rule the world in 100 hours or so"; 
$newString = preg_replace("/([a-z\s]*)(?=\d)/i", "", $string); 
echo $newString; // Outputs "100 hours or so" 

你可以看到它this eval.in工作。如果你在一個函數想它,你可以這樣做:

function removeEverythingBeforeNumber($string) 
{ 
    return preg_replace("/([a-z\s]*)(?=\d)/i", "", $string); 
} 
$newString = removeEverythingBeforeNumber("Hello I want to rule the world in 100 hours or so"); 
0

你可以使用strpos獲得第一次出現的索引,然後substr獲得從index開始的字符串。會更快/更硬件友好,然後正則表達式我相信。

+0

它可以是任何數字,所以'strpos'不會工作(除非你打算做10次strpos調用)。 (1-9)' – chris85

+0

@ chris85的數字的第一次出現你是對的,我的misstake :(看起來像我沒有讀過goog足夠... –

相關問題