2016-09-20 2 views
0

Was ich versuche, alle Daten in einer Zeichenfolge vor dem ersten Auftreten einer Zahl wie (1-9) vielleicht in einer Funktion zu entfernen?PHP-Skript, um alles vor dem ersten Auftreten einer Zahl zu entfernen

Beispiel:

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

so, wenn ich einen Test wie habe „Hallo Ich will die Welt in 100 Stunden regieren oder so“

Ich möchte dies das erste Vorkommen einer Zahl zu finden, die ist 1 und lösche alles davor.

Verlassen mich mit 100 hours or so.

+0

Sie sollten eine Regex verwenden. Sie könnten 'preg_match' oder' preg_replace' verwenden. – chris85

Antwort

0

Wenn Sie die Funktion aufrufen möchten, wie Sie in Ihrem Beitrag erwähnt können Sie wie unten tun:

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

Auf diese Weise können die gleiche Funktion andere prasselt können aswell entsprechen.

0

Sie können mit dem regex /([a-z\s]*)(?=\d)/i wie diese preg_replace für diesen Einsatz:

$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" 

Sie einen mit this eval.in arbeiten sehen. Wenn Sie es in einer Funktion wollte könnten Sie verwenden:

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

Sie strpos verwenden könnte den Index des ersten Auftretens zu bekommen und dann substr die Zeichenfolge zu bekommen aus diesem Index beginnt. Wäre schneller/hardwarefreundlicher als Regex ich glaube.

+0

Es könnte eine beliebige Nummer sein, so dass 'strpos' nicht funktioniert (es sei denn, Sie werden 10 'strpos' Anrufe tätigen). 'erstes Auftreten einer Zahl wie (1-9)' – chris85

+0

@ chris85 Du hast recht, mein Fehler :(Scheint so, als hätte ich nicht genug gelesen ... –

Verwandte Themen