2016-09-20 2 views
0

함수에서 (1-9)와 같은 숫자가 처음 나오기 전에 문자열의 모든 데이터를 제거하려고합니까?첫 번째 숫자가 나오기 전에 모든 것을 제거하는 PHP 스크립트

예 : SO

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

난 숫자의 첫 번째 항목을 찾을 수

내가이 원하는 "안녕하세요 100 시간 정도면 세계를 지배하려는"와 같은 시험이있는 경우 어떤 1이고 그 전에 모든 것을 삭제하십시오.

날 떠나기 100 hours or so.

+0

정규식을 사용해야합니다. 'preg_match' 또는'preg_replace'를 사용할 수 있습니다. – chris85

답변

0

당신은 아래와 같이 할 수 있습니다 : 당신이 aswell 다른 재잘에 맞게 동일한 기능을 사용할 수 있습니다

<?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 

이 방법을.

0

이 같은 정규식 /([a-z\s]*)(?=\d)/i와 이에 대한 preg_replace를 사용할 수 있습니다

$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로 근무를 볼 수 있습니다. 당신이 함수에서 그것을 원하는 경우에 당신은이를 사용할 수 있습니다 : 해당 인덱스에서 시작하는 문자열을 얻기 위해 다음 substr를 선두로부터의 인덱스를 얻을 수 strpos을 사용할 수

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

. 더 빠르고/더 하드웨어 친절한 다음 정규식 내가 믿는 것입니다. 당신이 게시물에 언급과 같은 함수를 호출 할 경우

+0

그것은'strpos'가 작동하지 않는 어떤 숫자라도 될 수 있습니다 (여러분이 10 strpos 호출을하지 않는다면). '(1-9)와 같은 번호의 첫 번째 발생 ' – chris85

+0

@ chris85 맞아요, 제 실수 : (나는 충분히 goog를 읽지 않은 것 같습니다 ... –

관련 문제