9

私の文字列は「reply-234-private」です。「reply-」の後、「-private」の前の番号を取得したいのですが、「234」です。次のコードで試しましたが、空の結果が返されます。

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

6 に答える 6

25

あなたはそれを爆発させることができます:

<?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];
}
于 2013-01-14T03:46:30.077 に答える
7

explode()関数を見てください

このようなもの:

$myString = 'reply-234-private';

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

$answer = $myStringPartsArray[1];
于 2013-01-14T03:48:12.683 に答える
4

PHP に組み込まれている正規表現サポート関数 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://@@ad_custom_attr1@@/@@upn@@/@@samaccountname@@";
$str_arr = getInbetweenStrings('@@', '@@', $str);

print_r($str_arr);
于 2013-02-26T15:58:31.637 に答える
2
$myString = 'reply-234-private';
echo str_replace('-','',filter_var($myString,FILTER_SANITIZE_NUMBER_INT));

それは仕事をするはずです。

于 2013-12-29T14:59:02.373 に答える
1

jsでやりたい場合は、この機能を試してください-

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;
}
于 2015-04-30T15:30:33.133 に答える