MVC、phpを使用している電子商取引Webサイトで作業しています。私は説明と呼ばれるフィールドを持っています。ユーザーは、説明フィールドに複数の製品IDを入力できます。例{productID = 34}, {productID = 58}
PHPを使用してStringで複数の文字列を検索する
については
私は、このフィールドからすべてのプロダクトIDを取得しようとしています。ちょうど製品ID。
どうすればよいですか?
MVC、phpを使用している電子商取引Webサイトで作業しています。私は説明と呼ばれるフィールドを持っています。ユーザーは、説明フィールドに複数の製品IDを入力できます。例{productID = 34}, {productID = 58}
PHPを使用してStringで複数の文字列を検索する
については
私は、このフィールドからすべてのプロダクトIDを取得しようとしています。ちょうど製品ID。
どうすればよいですか?
このソリューションでは、キャプチャグループは使用しません。むしろ、\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
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>
恐ろしいアルン。素晴らしい答え。しかし、私が望むのは、製品IDという特定の文字列を検索することです。この文字列プロダクトIDは、説明フィールドで複数回繰り返すことができます。各インスタンスについて、IDは異なる。私はこれをどのようにして行うのですか?ありがとうございました – Akintunde007
この回答はOPの入力文字列を無視するため、投票結果が下がりました。この回答を編集または削除してください。 – mickmackusa
希望マッチを抽出する[キャプチャグループ(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) –
@bobblebubble私は自分の携帯電話に入力したくないいくつかの理由から、良いSO市民権を練習し、回答を投稿する衝動に抵抗してくださいコメントとして。 – mickmackusa