2016-11-24 3 views
1

MVC、phpを使用している電子商取引Webサイトで作業しています。私は説明と呼ばれるフィールドを持っています。ユーザーは、説明フィールドに複数の製品IDを入力できます。例{productID = 34}, {productID = 58}PHPを使用してStringで複数の文字列を検索する

については

私は、このフィールドからすべてのプロダクトIDを取得しようとしています。ちょうど製品ID。

どうすればよいですか?

+0

希望マッチを抽出する[キャプチャグループ(http://www.regular-expressions.info/brackets.html)を必要とする:[ '/のproductID =(\ D +)/'](HTTPS: //regex101.com/r/aGs2VQ/1)( '\ d'は数字の[0-9]と一致します)。 [demo at eval.in](https://eval.in/686248) –

+0

@bobblebubble私は自分の携帯電話に入力したくないいくつかの理由から、良いSO市民権を練習し、回答を投稿する衝動に抵抗してくださいコメントとして。 – mickmackusa

答えて

1

このソリューションでは、キャプチャグループは使用しません。むしろ、\Kを使用しているため、完全な文字列要素は、かっこでキャプチャされる要素になります。これは、配列要素の数を50%削減するため、良い方法です。

$description="{productID = 34}, {productID = 58}"; 
if(preg_match_all('/productID = \K\d+/',$description,$ids)){ 
    var_export($ids[0]); 
} 

// output: array(0=>'34',1=>'58') 

// \K in the regex means: keep text from this point 
0
Without using regex, something like this should work for returning the string positions: 

<code> 
    $html = "dddasdfdddasdffff"; 
    $needle = "asdf"; 
    $lastPos = 0; 
    $positions = array(); 

    while (($lastPos = strpos($html, $needle, $lastPos))!== false) { 
     $positions[] = $lastPos; 
     $lastPos = $lastPos + strlen($needle); 
    } 

    // Displays 3 and 10 
    foreach ($positions as $value) { 
     echo $value ."<br />"; 
    } 
</code> 
+0

恐ろしいアルン。素晴らしい答え。しかし、私が望むのは、製品IDという特定の文字列を検索することです。この文字列プロダクトIDは、説明フィールドで複数回繰り返すことができます。各インスタンスについて、IDは異なる。私はこれをどのようにして行うのですか?ありがとうございました – Akintunde007

+1

この回答はOPの入力文字列を無視するため、投票結果が下がりました。この回答を編集または削除してください。 – mickmackusa

関連する問題