2017-09-17 4 views
3

と同じ文字が最後に出現する前に、私は次のようないくつかの文字列を持っている: ORG-000012 - 変動の名前 - 数量:12パック - $ 14.95文字の第二の発生後の文字列を返すとPHP

2番目のハイフンの前とphpの最後のハイフンの後にすべての文字を削除する必要があります。たとえば、上記の文字列は次のように返さなければなりません。 バリエーションの名前 - 数量:12パック

私はstrposとsubstrを使用しようとしましたが、正しい設定を得ることができません。助けてください!

答えて

1

で分割してexplode()をちょうど使用してください。間内の要素の数は可変、array_shift()及びarray_pop()は、最初と最後の要素を除去するためのアレイである場合

<?php 
$description = "ORG-000012 – Name of variation – Quantity: 12 Pack – $14.95"; 
$descriptionArray = explode(" – ", $description); 
$finalDescription = $descriptionArray[1]." – ".$descriptionArray[2]; 
var_dump($finalDescription); // string(39) "Name of variation – Quantity: 12 Pack" 

Demo

または、:

<?php 
$description = "ORG-000012 – Name of variation – Quantity: 12 Pack – $14.95"; 
$descriptionArray = explode(" – ", $description); 
array_pop($descriptionArray); 
array_shift($descriptionArray); 
var_dump($descriptionArray); 
次いで、第二及び第三の要素を取得します

Demo

+0

ありがとうございます!これは、私が必要とされていたところに到達するのを助けました。デモは素晴らしかったです。とても有難い! – Christy

1

最初に発生した位置strrposを使用してstrposを使用し、最後に出現する位置がそれをotの見つけ-文字のE:

それはどういう
$s = 'ORG-000012 - Name of variation - Quantity: 12 Pack - $14.95'; 
$sub = substr($s,strpos($s, '-')+1, strrpos($s, '-')-strlen($s)); 
print $sub; // or print trim($sub) to remove the whitespaces 

、それは$sのsubstrinigが-文字が最初に出現した後、1つの文字から始まる印刷され、負の値(文字列の全長と最後の出現の位置との差が-文字)を長さとしてsubstrに渡して、最後に出現した文字を-から除外します。

最後に-の前にスペース文字が印刷されるので、結果も同様にtrimにすることをお勧めします。

1

はREG exprを持つことは可能です、と試してみてください。

preg_match(
    '/(?<=\s–\s)(.*)(?:\s–\s)[^\s]+$/', 
    'ORG-000012 – Name of variation – Quantity: 12 Pack – $14.95', 
    $matches 
); 
echo $matches[1]; //Name of variation – Quantity: 12 Pack 
関連する問題