0

私は文字列を持っています:

[gallery ids="2282,2301,2302,2304,2283,2303,2285,459,1263,469,471,1262,1261,472,608,467,607,606,466,460"]

ids異なりますが、どうすれば (PHP で) 値を取得できますか?

ids正規表現は私の得意分野ではありませんが、単語?の直後にある引用符内のすべてをチェックできると思います。

4

3 に答える 3

5

正規表現:preg_match_all(/\d+/,$string,$matches);

ここで説明されたデモ: http://regex101.com/r/fE4fE6

于 2013-03-04T23:51:08.697 に答える
2

を使用するよりも単純な解決策は、ID が 2 番目の要素 (index ) になる区切り文字としてpreg_match単純explodeに文字列を使用することだと思います。"1

$string = '[gallery ids="2282,2301,2302,2304,2283,2303,2285,459,1263,469,471,1262,1261,472,608,467,607,606,466,460"]';

$array = explode('"', $string);

$ids = explode(',', $array[1]);

これは、関数配列の逆参照が追加された PHP 5.4 から非常に洗練されたものになります。

$string = '[gallery ids="2282,2301,2302,2304,2283,2303,2285,459,1263,469,471,1262,1261,472,608,467,607,606,466,460"]';

$ids = explode(',', explode('"', $string)[1]);

これがもたらす利点preg_matchは、値が何であるかは問題ではないということです。値は、数字、文字、またはその他の記号である可能性があります。

于 2013-03-04T23:59:04.693 に答える
0

正規表現以外のソリューションが必要な場合は、次のようにすることができます。

$str = ...;

$start = strpos($str, '"') + 1; // find opening quotation mark
$end = strpos($str, '"', $start); // find closing   ''     ''

$ids = explode(",", substr($str, $start, $end - $start));
于 2013-03-04T23:54:17.450 に答える