powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Кто дружит с регами?
7 сообщений из 7, страница 1 из 1
(PHP) Кто дружит с регами?
    #33228778
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
<?
        //есть рег для проверки страницы
        $reg    = '/papa/mama/([0-9_A-Za-z-]+)/deda/([0-9]+)/baba/';
        //есть вошедший урл
        $url    = '/papa/mama/gaylord_fucker/deda/100/baba/';
        $regs = array();
        preg_match_all(
                "|".$reg."|", 
                $url, 
                $regs
        );
        /*
        шаблон, для составления нового урла
        из него же берем наименование констант
        а их значения из вошедшего урла
        таким образом нужно получить:
        CONST_1 = gaylord_fucker
        CONST_2 = 100
        */
        $templateUrl = '/papa/mama/{CONST_1}/deda/{CONST_2}/baba/';
        analysisReg($templateUrl);
        $e = array();
        function analysisReg($buffer=''){
                global $e;
                if(preg_match("/(.*)\{([0-9_A-Za-z]){1,}\}(.*)$/", $buffer)){
                        preg_match_all("/(.*)\{([0-9_A-Za-z]*)\}(.*)/", $buffer, $matches);
                        print '<pre>';
                        print 'Получили имя константы: ' .$matches[ 2 ][ 0 ].'<br />';
                        print '</pre>';
                        $e[] = $matches[ 2 ][ 0 ];
                        analysisReg($matches[ 1 ][ 0 ]);
                        analysisReg($matches[ 3 ][ 0 ]);
                }
        }
        print '<hr>';
        //выведем массив значений
        foreach($regs as $k=>$v){
                if( 0 ==$k) continue;
                print 'Получили значение константы: ' .$v[ 0 ].'<br />';
        }
        /*
        
        вопрос - как сопоставить правильно имя будущей константы и ее значение для ее дальнейшего определения
        
        помогите пожалуйста господа...

        ???
        
        */
?>

на выходе имеем:
Код: plaintext
1.
2.
3.
4.
5.
Получили имя константы: CONST_2
Получили имя константы: CONST_1

--------------------------------------------------------------------------------
Получили значение константы: gaylord_fucker
Получили значение константы: 100
...
Рейтинг: 0 / 0
(PHP) Кто дружит с регами?
    #33228781
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему, тут вполне к месту будет ассоциативный массив, он же хэш.
...
Рейтинг: 0 / 0
(PHP) Кто дружит с регами?
    #33228880
DocAl
т.е.?
поясните плиз свою мысль...
...
Рейтинг: 0 / 0
(PHP) Кто дружит с регами?
    #33228909
taj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрьич, у меня голова болит и вообще понедельник день тяжелый. Поэтому не обессудь, если я не понял твоей проблемы, но вроде она заключалась в том, что у тебя порядок вывода названий констант не соответствует порядку вывода значений. Между тем preg_match_all на то и all, что рекурсия здесь не нужна, функцию можно заменить на
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function analysisReg($buffer=''){
 global $e;
 if(preg_match("/\{([0-9_A-Za-z]){1,}\}/", $buffer)){
 preg_match_all("/\{([0-9_A-Za-z]*)\}/", $buffer, $matches, PREG_SET_ORDER);
 print '<pre>';
 for ($i= 0 ; $i<sizeof($matches); $i++)
 {
  print 'Получили имя константы: ' .$matches[$i][ 0 ].'<br />';
 }
  print '</pre>';
 }
}
Хэв э найс дэй.
...
Рейтинг: 0 / 0
(PHP) Кто дружит с регами?
    #33228916
taj
я научусь, я не жду ответа тут же, я пишу реги, читаю книги, в общем изучаю
но за науку большое спасибо!!!
Я просто не правильно курил прег_матч_олл
Еще раз поклон! :-)
...
Рейтинг: 0 / 0
(PHP) Кто дружит с регами?
    #33229131
Короче - тут реги нахрен не нужны
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?
	//есть рег для проверки страницы
	$reg    = '/papa/mama/([0-9_A-Za-z-]+)/deda/([0-9]+)/baba/';
	//есть вошедший рег
	$url    = '/papa/mama/gaylord_fucker/deda/100/baba/';
	//шаблон для составления новых урлов
	$tpl = '/papa/mama/{CONST_1}/deda/{CONST_2}/baba/';
	
	$reg = explode('/',$reg);
	$url = explode('/',$url);
	$tpl = explode('/',$tpl);
	$all = array();
	for($i= 0 ; $i<count($reg);$i++){
		if(substr($tpl[$i], 0 , 1 )=='{'){
			$all[$i]['reg'] = $reg[$i];
			$all[$i]['url'] = $url[$i];
			$all[$i]['tpl'] = substr($tpl[$i], 1 ,strlen($tpl[$i])- 2 );
			print sprintf("define('%s','%s');<br />\n",$all[$i]['tpl'],$all[$i]['url']);
		}
	}

?>

на выходе имеем то, что надо:
Код: plaintext
1.
2.
define('CONST_1','gaylord_fucker');
define('CONST_2','100');
...
Рейтинг: 0 / 0
(PHP) Кто дружит с регами?
    #33229146
или если уж быть совсем точным:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
<?
	//есть рег для проверки страницы
	$reg    = '/papa/mama/([0-9_A-Za-z-]+)/deda/([0-9]+)/baba/';
	//есть вошедший рег
	$url    = '/papa/mama/gaylord_fucker/deda/100/baba/';
	//шаблон для составления новых урлов
	$tpl = '/papa/mama/{CONST_1}/deda/{CONST_2}/baba/';
	
	$reg = explode('/',$reg);
	$url = explode('/',$url);
	$tpl = explode('/',$tpl);
	$all = array();
	for($i= 0 ; $i<count($reg);$i++){
		if(substr($tpl[$i], 0 , 1 )=='{'){
			$all[$i]['reg'] = $reg[$i];
			$all[$i]['url'] = $url[$i];
			$all[$i]['tpl'] = substr($tpl[$i], 1 ,strlen($tpl[$i])- 2 );
			define($all[$i]['tpl'],$all[$i]['url']);
			if($all[$i]['reg']=='([0-9]+)'){
				print sprintf("define('%s',%d);<br />\n",$all[$i]['tpl'],$all[$i]['url']);
			} else {
				print sprintf("define('%s','%s');<br />\n",$all[$i]['tpl'],$all[$i]['url']);
			}
		}
		
	}
?>

на выходе:
Код: plaintext
1.
2.
define('CONST_1','gaylord_fucker');
define('CONST_2', 100 );
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Кто дружит с регами?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]