function preg_key_exists($search, $array) {
$keys = array_keys($array);
$filtered = array_filter($keys, function($key) use ($search) {
if(strpos($key, '{') !== false && strpos($key, '}') !== false) {
$exploded = explode('{', $key);
$pattern = rtrim($exploded[1], '}');
preg_match('#'.$exploded[0].$pattern.'#', $search, $matches);
return count($matches) > 0;
} else {
return $key === $search;
}
});
return count($filtered) > 0;
}
$arr2 = array(
'news/{([0-9]+)}' => 'News/view/$1',
'inde' => 'Master/index'
);
var_dump(preg_key_exists('inde', $arr2));
//TRUE
var_dump(preg_key_exists('news/10', $arr2));
// TRUE
var_dump(preg_key_exists('indesadasdsadasd', $arr2));
//FALSE
Версия на php? При мен на 5.5, 5.6 и 7.0 си е ок.pro12 каза:При мен не работи дава ми null.
<?php
$arr2 = array(
'#news/([0-9]+)#' => 'News/view/$1',
'#inde#' => 'Master/index',
);
// test 1
$input = "news/34";
$result = preg_filter(array_keys($arr2), array_values($arr2), $input);
echo $result; // result: News/view/34
echo PHP_EOL;
// test 2
$input = "inde";
$result = preg_filter(array_keys($arr2), array_values($arr2), $input);
echo $result; // result: Master/index
pro12 каза:Ако сложа разделители работи, но останалия код спира да ми работи. Има ли начин да стане без разделители?
Revelation каза:Въпроса е, че шаблоните трябва да ги заградиш с разделители(в случая аз използвам #).
ttta каза:Revelation каза:Въпроса е, че шаблоните трябва да ги заградиш с разделители(в случая аз използвам #).
Дам, вместо да ги сложим на единственото място на което се ползват като регулярен израз ще ги пишем във всеки ключ като по този начин всички останали извиквания за проверка на ключ ще трябва да се преправят.
ttta каза:Ето, че си знаел как трябва да се напише.
Хайде сега го напиш както трябва, та да не чупиш цялото приложение.
ttta каза:Добре е измислено приложението (най-вероятно де, все пак не мога да го коментирам без да съм го видял) и е съвсем нормално да се счупи когато почнеш да пипаш по константи които не знаеш как, къде и за какво се ползват.
А какво ти харесва и какво не ми е все тая.
Revelation каза:Селянина си е селянин, непоправимо е.
ttta каза:Revelation каза:Селянина си е селянин, непоправимо е.
Толкова ли ти е беден речника, че почна с личните нападки?
ТИ промени ключовете в масивът след което приложението спря да работи. А аз просто ти посочих какъв е проблема за да не се налага да се напрягаш излишно.
Виж колко добре съм преценил, че интелектът не ти е силна страна, гражданино ...
Revelation каза:ttta каза:Ето, че си знаел как трябва да се напише.
Хайде сега го напиш както трябва, та да не чупиш цялото приложение.
Нещо не ми харесва начина ти на отговаряне. Не е първата тема, в която отговаряш като че ли притежаваш някого тука и можеш да му даваш заповеди. Или се дръж като хората, или по-добре не пиши безсмислени коментари.
След като знаеш как да стане, защо ти не даде решението?
Другото е, че щом му се чупи приложението, значи архитектурно не е измислено добре.
Исках да знам какво точно му се чупи, защото може разделителите да му правят проблем и може и да се размине само със смяната им, вместо да се мисли нов метод на изпълнение.