2013-01-14 18 views
6

Meine Zeichenfolge ist: "Antwort-234-private", ich möchte die Nummer nach "Antwort" und vor "-private", es ist "234". Ich habe mit folgendem Code versucht, aber es gibt ein leeres Ergebnis:Get String zwischen zwei Strings

$string = 'reply-234-private'; 
$display = preg_replace('/reply-(.*?)-private/','',$string); 
echo $display; 
+3

gut Sie verwenden preg_replace(), wollen Sie nicht preg_match() ?? –

Antwort

20

können Sie nur explode es:

<?php 
$string = 'reply-234-private'; 
$display = explode('-', $string); 

var_dump($display); 
// prints array(3) { [0]=> string(5) "reply" [1]=> string(3) "234" [2]=> string(7) "private" } 

echo $display[1]; 
// prints 234 

Oder verwenden preg_match

<?php 
$string = 'reply-234-private'; 
if (preg_match('/reply-(.*?)-private/', $string, $display) === 1) { 
    echo $display[1]; 
} 
+0

Danke, es funktioniert! –

7

Werfen Sie einen Blick auf explode() function

etwas wie dieses:

$myString = 'reply-234-private'; 

$myStringPartsArray = explode("-", $myString); 

$answer = $myStringPartsArray[1]; 
+0

Vielen Dank! –

4

PHPs eingebaute Regex Support-Funktionen preg_match_all

dies helfen würde, an, dass Sie das Array von Strings (Tasten) wollen zwischen @@ in folgendem Beispiel, wo '/' fällt nicht in- Dazwischen können Sie gebaut neues Beispiel mit unterschiedlichem Start ein Ende Variable

function getInbetweenStrings($start, $end, $str){ 
    $matches = array(); 
    $regex = "/$start([a-zA-Z0-9_]*)$end/"; 
    preg_match_all($regex, $str, $matches); 
    return $matches[1]; 
} 

$str = "C://@@[email protected]@/@@[email protected]@/@@[email protected]@"; 
$str_arr = getInbetweenStrings('@@', '@@', $str); 

print_r($str_arr); 
2
$myString = 'reply-234-private'; 
echo str_replace('-','',filter_var($myString,FILTER_SANITIZE_NUMBER_INT)); 

Das sollte die Arbeit machen.

7

Dieser Artikel zeigt Ihnen, wie Sie von jeder Zeichenfolge zwischen zwei Tags oder zwei Strings bekommen.

http://okeschool.com/articles/312/string/how-to-get-of-everything-string-between-two-tag-or-two-strings

<?php 
// Create the Function to get the string 
function GetStringBetween ($string, $start, $finish) { 
    $string = " ".$string; 
    $position = strpos($string, $start); 
    if ($position == 0) return ""; 
    $position += strlen($start); 
    $length = strpos($string, $finish, $position) - $position; 
    return substr($string, $position, $length); 
} 
?> 

, falls Ihre Frage, können Sie dies versuchen:

$string1='reply-234-private'; 
echo GetStringBetween ($string1, "-", "-") 

oder wir können zwischen dem Bezeichnerstring die Zeichenfolge eine beliebige ‚Bezeichnerstring‘ für Greifer verwenden. zum Beispiel:

echo GetStringBetween ($string1, "reply-", "-private") 
1

Wenn Sie es in js tun wollen, versuchen Sie diese Funktion -

function getStringBetween(str , fromStr , toStr){ 
    var fromStrIndex = str.indexOf(fromStr) == -1 ? 0 : str.indexOf(fromStr) + fromStr.length; 
    var toStrIndex = str.slice(fromStrIndex).indexOf(toStr) == -1 ? str.length-1 : str.slice(fromStrIndex).indexOf(toStr) + fromStrIndex; 
    var strBtween = str.substring(fromStrIndex,toStrIndex); 
    return strBtween; 
} 
Verwandte Themen