PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 6
drfreud Отправлено: 05 Февраля, 2014 - 11:25:12 • Тема: Не работает регулярное выражение • Форум: Вопросы новичков

Ответов: 4
Просмотров: 212
CODE (htmlphp):
скопировать код в буфер обмена
  1. "/content\(.*\)\s?\{\s?\?\>\n(\t*.*\n)*\t*\<\?php\s?\}/"

а зачем так сложно-то?
CODE (htmlphp):
скопировать код в буфер обмена
  1. "/\{(.*?)\<\?php\s?\}/ms"

не проверял, но должно и так выбирать, только не забывайте про флаги m и s после выражения.
И еще, тут вроде на этом форуме есть специальный раздел, посвещенный регуляркам, ваш вопрос скорее туда.
drfreud Отправлено: 05 Февраля, 2014 - 11:07:30 • Тема: PHP|MySQL Черный список • Форум: Вопросы новичков

Ответов: 4
Просмотров: 248
Есть вариант решения данной задачи с помощью ajax-запросов, при вводе данных в то или иное поле введенные данные отправляются аяксом на сервер и проверяются на соответствие ЧС . Можно и без него, но тогда потребуется перезагрузка страницы и сама проверка будет происходить только после отправки всей формы.
drfreud Отправлено: 22 Января, 2014 - 16:25:49 • Тема: Безопасная обработка форм • Форум: Вопросы новичков

Ответов: 5
Просмотров: 393
Простейший вариант:
PHP:
скопировать код в буфер обмена
  1. if (preg_match("/[^(\w)|(\@)|(\.)|(\-)]/",$usermail)) {
  2.         echo "invalid mail";
  3.         exit;
  4. }

Вобще для проверки мыла регулярка сложнее, но в минимальном виде выглядит примерно так.
drfreud Отправлено: 22 Января, 2014 - 16:12:30 • Тема: И снова пустой массив • Форум: Регулярные выражения

Ответов: 7
Просмотров: 335
Спасибо! Теперь ясно хоть в чем косяк состоял. Вообще данный код родился после мучений с функцией preg_replace. В общем виде задача заключается в следующем:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <shape>
  2.             <appearance>
  3.               <material diffuseColor='0.3412 0.8824 0.7765'></material>
  4.             </appearance>
  5.             <indexedFaceSet coordIndex='6 2 1 -1 1 0 6 -1 8 10 9 -1 9 7 8 -1 11 5 4 -1 4 3 11 -1 13 15 14 -1 14 12 13 -1'>
  6.               <coordinate DEF='Verticals-COORD' point='68 8 -528.8 68 8 -31.2 68 733 -31.2 1150 8 -528.8 1150 8 -31.2 1150 733 -31.2 68 733 -528.8 50 8 -528.8 50 8 -31.2 50 733 -528.8 50 733 -31.2 1150 733 -528.8 1132 8 -528.8 1132 8 -31.2 1132 733 -528.8 1132 733 -31.2'></coordinate>
  7.               <textureCoordinate DEF='Verticals-TEXCOORD' point='749.3 -358 251.7 -358 251.7 367 749.3 -358 251.7 -358 251.7 367 749.3 367 -748.3 -358 -250.7 -358 -748.3 367 -250.7 367 749.3 367 -748.3 -358 -250.7 -358 -748.3 367 -250.7 367'></textureCoordinate>
  8.             </indexedFaceSet>
  9.           </shape>
  10.           <shape>
  11.             <appearance>
  12.               <material diffuseColor='0.3412 0.8824 0.7765'></material>
  13.             </appearance>
  14.             <indexedFaceSet>
  15.               <coordinate USE='Verticals-COORD'></coordinate>
  16.             </indexedFaceSet>
  17.           </shape>

в данном куске кода видно, что есть 2 блока shape'ов, но в одном есть координаты, а в другом их нет, суть в том, чтобы убрать из кода все блоки shape без координат, просто заменить их пустой строкой. Но поскольку как я уже писал здесь, я ранее практически не сталкивался с парсингом и регулярками, то написать это в одну строку у меня не вышло и я решил сначала разбить файл на shape'ы, а затем уже в каждом отдельно искать "пустые" и удалять их из массива. В данном случае искать по наличию сочетания USE= поскольку ссылки на координаты есть только в пустых блоках. Если сообщество предложит вариант решения данной задачи в одну строку буду очень признателен, ну и может просто кого-то заинтересует решение.
drfreud Отправлено: 22 Января, 2014 - 15:52:45 • Тема: И снова пустой массив • Форум: Регулярные выражения

Ответов: 7
Просмотров: 335
Спасибо!))) Как бы это сказать, мое невежество не знает границ!))) Но будем заполнять пробелы.
В исходном коде страницы:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => <shape>
  6.             <appearance>
  7.               <material diffuseColor='0.3412 0.8824 0.7765'></material>
  8.             </appearance>
  9.             <indexedFaceSet>
  10.               <coordinate USE='Verticals-COORD'></coordinate>
  11.             </indexedFaceSet>
  12.           </shape>
  13.             [1] => <shape>
  14.             <appearance>
  15.               <material diffuseColor='0.3412 0.8824 0.7765'></material>
  16.             </appearance>
  17.             <indexedFaceSet>
  18.               <coordinate USE='Verticals-COORD'></coordinate>
  19.             </indexedFaceSet>
  20.           </shape>
  21.             [2] => <shape>
  22.             <appearance>
  23.               <material diffuseColor='0.3412 0.8824 0.7765'></material>
  24.             </appearance>
  25.             <indexedFaceSet>
  26.               <coordinate USE='Verticals-COORD'></coordinate>
  27.             </indexedFaceSet>
  28.           </shape>
  29.         )
  30. )

что собственно и требовалось! А не подскажите, это особенность поведения функции print_r или что?
drfreud Отправлено: 22 Января, 2014 - 15:38:57 • Тема: И снова пустой массив • Форум: Регулярные выражения

Ответов: 7
Просмотров: 335
Доброго всем времени суток!
Простенький код:
PHP:
скопировать код в буфер обмена
  1. $inptData = " <shape>
  2.            <appearance>
  3.              <material diffuseColor='0.3412 0.8824 0.7765'></material>
  4.            </appearance>
  5.            <indexedFaceSet>
  6.              <coordinate USE='Verticals-COORD'></coordinate>
  7.            </indexedFaceSet>
  8.          </shape>
  9.          <shape>
  10.            <appearance>
  11.              <material diffuseColor='0.3412 0.8824 0.7765'></material>
  12.            </appearance>
  13.            <indexedFaceSet>
  14.              <coordinate USE='Verticals-COORD'></coordinate>
  15.            </indexedFaceSet>
  16.          </shape>
  17.          <shape>
  18.            <appearance>
  19.              <material diffuseColor='0.3412 0.8824 0.7765'></material>
  20.            </appearance>
  21.            <indexedFaceSet>
  22.              <coordinate USE='Verticals-COORD'></coordinate>
  23.            </indexedFaceSet>
  24.          </shape>";
  25. preg_match_all('%<shape>.*?</shape>%ms', $inptData, $outpArr);
  26. print_r($outpArr);

Выдает:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Array ( [0] => Array ( [0] => [1] => [2] => ) )

Сам код выглядит в данном случае бесполезным, но он нужен для дальнейшего парсинга файла (файл - 3D модель в формате .x3d). Никак не могу понять почему массив пуст, тогда как совпадения вроде находятся (с увеличением количества блоков <shape>...</shape> увеличивается количество элементов массива, но они все равно пусты). Буду очень признателен толковому совету, к сожалению парсер раньше писать не доводилось, потому прошу о помощи.

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB