PHP preg_match извлечение переменной функции - PullRequest
1 голос
/ 13 декабря 2011

Предполагая, что у меня есть такая строка:

[$IMAGE[file_name|width|height]]

Как мне сопоставить и получить 2 переменные

$tag = "IMAGE"
$param = "file_name|width|height"

Используя функцию php preg_match?

Ответы [ 3 ]

6 голосов
/ 13 декабря 2011
$string = '[$IMAGE[file_name|width|height]]';
// Matches only uppercase & underscore in the first component
// Matches lowercase, underscore, pipe in second component
$pattern = '/\[\$([A-Z_]+)\[([a-z_|]+)\]\]/';
preg_match($pattern, $string, $matches);

var_dump($matches);
array(3) {
  [0]=>
  string(32) "[$IMAGE[file_name|width|height]]"
  [1]=>
  string(5) "IMAGE"
  [2]=>
  string(22) "file_name|width|height"
}
1 голос
/ 13 декабря 2011

Не использует preg_match, но работает так же хорошо.

$var = '[$IMAGE[file_name|width|height]]';
$p1 = explode('[',$var);
$tag = str_replace('$','',$p1[1]);
$param = str_replace(']','',$p1[2]);

echo $tag.'<br />';
echo $param;
0 голосов
/ 13 декабря 2011
<?php
$string = '[$IMAGE[file_name|width|height]]';
preg_match("/\[\\$(.*)\[(.*)\]\]/",$string,$matches);

$tag = $matches[1];  
$param = $matches[2];

echo "TAG: " . $tag;
echo "<br />";
echo "PARAM: " . $param;
?>
...