Помощник
|
regexp |
Letmetouchyou
|
Сообщение
#1
|
||
|
|
||
|
|||
ZhukV |
6.7.2010, 9:40;
Ответить: ZhukV
Сообщение
#2
|
|
Letmetouchyou, не очень то понял вопроса... :rolleyes:
[PHP] $TEXT = "{#user:name loop=4 require_file=index.php}"; //$TEXT = "{#user:name}"; //$TEXT = "{#user}"; $PATTERN = '/#([^(:|})]+):?([^(\s|})]+)?\s?([^}]+)?/'; if(preg_match($PATTERN, $TEXT, $m)){ $output['todo'] = $m[1]; $output['what'] = $m[2] ? $m[2] : false; $output['param'] = $m[3] ? $m[3] : false; print_r($output); }else{ echo "No"; } [/PHP] Вроде ничего лишнего. Если уж те нужно будет произвести парсер HTML страницы, и оттуда вытаскать все элементы, тогда лучше взгляни в сторону PHP Simple HTML DOM Parser. Очень полезная вещь при парсингу любого HTML!!! |
|
|
Letmetouchyou
|
Сообщение
#3
|
|
о, это на много лутше))
только не правильно работает если напрмиер: {#user loop=5 file:sdas} должно раскидать: [PHP]$output['todo'] = 'user'; $output['param'] = 'loop=5 file:sdas'[/PHP] а шас кидает все в todo |
|
|
ZhukV |
6.7.2010, 18:15;
Ответить: ZhukV
Сообщение
#4
|
|
Поменяй:
[PHP] $PATTERN = '/#([^(:|})]+):?([^(\s|})]+)?\s?([^}]+)?/'; [/PHP] на [PHP] $PATTERN = '/#([^(:|}|\s)]+):?([^(\s|})]+)?\s?([^}]+)?/'; [/PHP] |
|
|
Letmetouchyou
|
Сообщение
#5
|
|
ZhukV, буду очень признателен, если объяснишь по элеметам саму регулряку ))
или хотябы первый куоск ([^(:|}|\s)]+) как то регулрярные выражения не даються >.< |
|
|
ZhukV |
6.7.2010, 18:39;
Ответить: ZhukV
Сообщение
#6
|
|
Ладно, поехали :)
Вот сам код регулярки: /#([^(:|})]+):?([^(\s|})]+)?\s?([^}]+)?/ Наверное ты знаеш, что то, что находится в круглых скобках, потом выносится в массив, если он был задан. Так вот, сначала мы ищем вхождение символа # и после него роем дальше. ([^(:|}|\s)]+) Этот участок мы выносим в массив, ключ которого будет 1 Все что находится в квадратных масках подлежит маске, так называемому шаблону. Обычно указывают [a-zA-Z], что означает все англ симовлы. Здесь и можна указывать все символы, которые ДОЛЖНЫ всречатся. Но у нас немного по другому. Сначала стоит знак ^, который обозначает, что все символы кроме.... Значит у нас будут подлежать симовлы кроме (:|}|\s), инными словами можна сказать : or } or \s. Если таков символ был найден, он сразу переходит далее. Сам плючик обозначает, что может быть многовато символов. Далее у нас :? Это обозначает, что символ двоеточия может быть, а может и не быть. хи-хи. Ну вот и пример: {#user} Символа двоеточие нет же, а регулярка совпадет. Можна подставлять не только символы, а и целые маски. [PHP] ([^(\s|})]+)? [/PHP] Почти тоже самое что и первое, вот только за исключением пробельного сивола (\s|}) В конце стоит знак вопроса, тоесть может быть, а может и не быть. И последние, так же. Letmetouchyou, если честно, регулярки обяснять тяжеловато, в них просто нужно вехать и немного знать правил. Лично я учился на php.su и толком вехал примерно через два дня. Вот только правила бывало что забывал. УДАЧИ |
|
|
Letmetouchyou
|
Сообщение
#7
|
|
ZhukV, год назад у меня php.su работал)
шас с трех кампов Server n0t found >.< (( |
|
|
ZhukV |
6.7.2010, 18:50;
Ответить: ZhukV
Сообщение
#8
|
|
|
Letmetouchyou, Сейчас уже бегу с работы додмой, вдома нета нету. Если что, стучи завтра в асю, как смогу обяснить, так и обясню. Ок?
|
|
|
||
|
Текстовая версия | Сейчас: 19.4.2024, 19:28 |