Вопрос по preg-match, php, pcre, regex – Получить строку между двумя строками

7

Моя строка: "ответ-234-частное»хочу получить номер послеОтветить-" и раньше-частный", это "234", Я пытался с помощью следующего кода, но он возвращает пустой результат:

$string = 'reply-234-private';
$display = preg_replace('/reply-(.*?)-private/','',$string);
echo $display;
Хорошо ты'использовать preg_replace (), неты хочешь preg_match () ?? user557846

Ваш Ответ

6   ответов
2
$myString = 'reply-234-private';
echo str_replace('-','',filter_var($myString,FILTER_SANITIZE_NUMBER_INT));

4

preg_match_all

это помогло бы, предположим, что вам нужен массив строк (ключей) между @@ в следующем примере, где '/' Безразлично»Вы можете построить новый пример с различнымиНачните конец переменная

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);
7

функция взрыва ()

что-то вроде этого:

$myString = 'reply-234-private';

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

$answer = $myStringPartsArray[1];
Спасибо вам большое! Nguyen Thanh
1

попробуйте эту функцию -

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;
}
21

Вы можете простовзрываться Это:

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

Или используйтеpreg_match

<!--?php
$string = 'reply-234-private';
if (preg_match('/reply-(.*?)-private/', $string, $display) === 1) {
    echo $display[1];
}
</code-->
Спасибо, это работает ! Nguyen Thanh
7

как получить все строки между двумя тегами или двумя строками.

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);
}
?-->

в случае вашего вопроса, вы можете попробовать это:

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

или мы можем использовать любойстрока идентификатора ' для захвата строки между строкой идентификатора. например:

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

Похожие вопросы