PHP.SU

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

Страниц (92): В начало « ... 78 79 80 81 [82] 83 84 85 86 ... » В конец

> Найдено сообщений: 1370
andrewkard Отправлено: 13 Августа, 2015 - 15:10:47 • Тема: удалить из строки все небуквенно-числовые символы, оставив смайлики • Форум: Регулярные выражения

Ответов: 11
Просмотров: 1535
sun1_sun2_sun3 пишет:
вот только хотелось бы объединить это все в 1 регулярку

вряд ли это возможно
(Добавление)
Можно уменьшить количество ошибок, на клиенте перед отправкой проверяйте по такому выражению, и если такие символы присутствуют, подсвечивайте их и не позволяйте отправить до исправления.
/([^\s]{1}\:|\)[^\s]{1})/
andrewkard Отправлено: 13 Августа, 2015 - 14:01:58 • Тема: удалить из строки все небуквенно-числовые символы, оставив смайлики • Форум: Регулярные выражения

Ответов: 11
Просмотров: 1535
Тогда нужно эти символы дополнительно обрабатывать, например так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $arr_smile = array(':)',': )',':Р',': Р');
  3. $str = 'Hello!!! i:u (o)и :)';
  4. $arr_symbols=array();
  5.  
  6. //запоминаем символы ":" и ")", которые не являются смайликом
  7. for ($i=1;$i<strlen($str)-1;$i++){
  8.     if($str[$i] == ':'){
  9.         if($str[$i-1] != ' '){
  10.             $arr_symbols[]=$i;
  11.         } else {
  12.             if($str[$i+1] == ' ' || $str[$i+1] == ')'){} else {
  13.                 $arr_symbols[]=$i;
  14.             }
  15.         }
  16.     }
  17.     if($str[$i] == ')'){
  18.         if($str[$i+1] != ' '){
  19.             $arr_symbols[]=$i;
  20.         } else {
  21.             if($str[$i-1] == ' ' || $str[$i-1] == ':'){} else {
  22.                 $arr_symbols[]=$i;
  23.             }
  24.         }
  25.     }
  26. }
  27.  
  28. //сортируме массив символов в обратном порядке
  29. arsort($arr_symbols);
  30.  
  31. //затираем символы ":" и ")", которые не являются смайликом
  32. foreach ($arr_symbols as $symbos){
  33.     $str[$symbos]='';
  34. }
  35.  
  36. //чистим строку
  37. $pattern = '/[^a-zA-ZА-Яа-я0-9\s\:\)*]/iu';
  38. $str_clear = preg_replace($pattern, '', $str);
  39.  
  40. //убираем смайлы для теста
  41. $str_test = $str_clear;
  42. foreach($arr_smile as $smile){
  43.     $str_test = str_replace($smile, '', $str_test);
  44. }
  45.  
  46. //если другие символы не найдены, выводим строку, иначе ошибка
  47. if (preg_match($pattern, $str_test)) {
  48.     echo "Error";
  49. } else {
  50.     echo $str_clear;
  51. }
  52.  
  53.  

(Добавление)
Правда нужно еще подумать как правильно эти условия прописать
andrewkard Отправлено: 13 Августа, 2015 - 13:06:07 • Тема: удалить из строки все небуквенно-числовые символы, оставив смайлики • Форум: Регулярные выражения

Ответов: 11
Просмотров: 1535
sun1_sun2_sun3 пишет:
нет, к сожалению этот скрипт не работает

Почему? На Ваших данных отработал верно.
andrewkard Отправлено: 13 Августа, 2015 - 12:41:46 • Тема: удалить из строки все небуквенно-числовые символы, оставив смайлики • Форум: Регулярные выражения

Ответов: 11
Просмотров: 1535
Тогда может как то так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $arr_smile = array(':)',': )',':Р',': Р');
  3. $str = 'Привет!!! :)';
  4. $pattern = '/[^a-zA-ZА-Яа-я0-9\s\:\)*]/iu';
  5. $str_clear = preg_replace($pattern, '', $str);
  6. $str_test = $str_clear;
  7. foreach($arr_smile as $smile){
  8.     $str_test = str_replace($smile, '', $str_test);
  9. }
  10.  
  11. if (preg_match($pattern, $str_test)) {
  12.     echo "Error";
  13. } else {
  14.     echo $str_clear;
  15. }
  16.  
andrewkard Отправлено: 13 Августа, 2015 - 12:01:06 • Тема: удалить из строки все небуквенно-числовые символы, оставив смайлики • Форум: Регулярные выражения

Ответов: 11
Просмотров: 1535
Можно так:
/[А-Яа-я\s\:\)]{1,}/
andrewkard Отправлено: 13 Августа, 2015 - 10:08:59 • Тема: Выражение и SQL-инъекция • Форум: Регулярные выражения

Ответов: 7
Просмотров: 554
Регулярное выражение проверяет на наличие конкретного набора символов, если оно верно, то в переменной будет только то, что разрешено Вами же. Так что в ней не будет ничего для sql инъекции.
andrewkard Отправлено: 12 Августа, 2015 - 18:44:16 • Тема: Пространичная навигация • Форум: JavaScript & VBScript

Ответов: 14
Просмотров: 1269
config.php


test.php
PHP:
скопировать код в буфер обмена
  1.  
  2. include 'config.php';
  3. echo $user_id; // 111
  4.  
andrewkard Отправлено: 12 Августа, 2015 - 18:40:18 • Тема: Как сделать вывод текста по отдельности из ячейки mysql • Форум: Программирование на PHP

Ответов: 12
Просмотров: 1293
Видимо я упустил это:
spark108 пишет:
В ячейках этого столбца садержутся сами теги через запятую например "Конкурсы, Новости, Видео"

Вот это не понял:
spark108 пишет:
И после тегов стоят знаки ";', а между ними неболольшие нижние черточки с разными ссылками.


Пробуйте так:
PHP:
скопировать код в буфер обмена
  1.  
  2. include 'config.php';
  3. if (isset($_GET['news'])) {
  4.     $limit = (int)$_GET['news'];
  5. } else {
  6.     $limit = '3';
  7. }
  8. $request = "SELECT news, user, title, tag, date_format(data,'%e.%m.%Y') as data1 FROM news ORDER BY id DESC LIMIT $limit";
  9. $result = mysql_query($request);
  10.  
  11. if (!mysql_error()) {
  12. // Цикл, вынимающий строку как массив с числовым индексом
  13.     while ($row = mysql_fetch_row($result)) {
  14.         //массив ключевых слов
  15.         $arr_tags = explode(',',$row[3]);
  16.         //обработка
  17.         $i=0;
  18.         $tags='';
  19.         foreach ($arr_tags as $tag){
  20.             $tags .= '<a href=index.php?tag='.$i.'> '.$tag.' </a> ';
  21.             $i++;
  22.         }
  23.  
  24.         print '<div id="colLeft">';
  25.         print '<div class="postItem">';
  26.         print '<h2>'.$row[2].'</h2>';
  27.         print '<p>'.$row[0].'</p>';
  28.         print '</div>';
  29.         print '<div class="meta meta-comments">';
  30.         print 'Дата публикации: '.$row[4].' | Опубликовал: '.$row[1].' | Метки: '.$tags.'</div>';
  31.         print '</div>';
  32.         $arr_tags[]=$row[3];
  33.  
  34.     }
  35. }
  36.  
  37.  
andrewkard Отправлено: 12 Августа, 2015 - 17:29:57 • Тема: Как сделать вывод текста по отдельности из ячейки mysql • Форум: Программирование на PHP

Ответов: 12
Просмотров: 1293
Код не проверял:
PHP:
скопировать код в буфер обмена
  1.  
  2. include 'config.php';
  3. if (isset($_GET['news'])) {
  4.     $limit = (int)$_GET['news'];
  5. } else {
  6.     $limit = '3';
  7. }
  8. $request = "SELECT news, user, title, tag, date_format(data,'%e.%m.%Y') as data1 FROM news ORDER BY id DESC LIMIT $limit";
  9. $result = mysql_query($request);
  10. $arr_tags = array();
  11. if (!mysql_error()) {
  12. // Цикл, вынимающий строку как массив с числовым индексом
  13.     while ($row = mysql_fetch_row($result)) {
  14.         print '<div id="colLeft">';
  15.         print '<div class="postItem">';
  16.         print '<h2>'.$row[2].'</h2>';
  17.         print '<p>'.$row[0].'</p>';
  18.         print '</div>';
  19.         print '<div class="meta meta-comments">';
  20.         print 'Дата публикации: '.$row[4].' | Опубликовал: '.$row[1].' | Метки: '.$row[3].'</div>';
  21.         print '</div>';
  22.         $arr_tags[]=$row[3];
  23.  
  24.     }
  25. }
  26. $i=0;
  27. foreach ($arr_tags as $tag){
  28.     echo '<a href=index.php?tag='.$i.'> '.$tag.' </a>;';
  29.     $i++;
  30. }
  31.  
andrewkard Отправлено: 12 Августа, 2015 - 11:00:55 • Тема: Проблема с базами данными • Форум: Вопросы новичков

Ответов: 11
Просмотров: 437
Heartofprogrammer пишет:
При клике на заголовок новости на главной странице index.php меня перебрасывает на страницу news.php и там не одну новость выводит а все новости.


вставьте полученный id в запрос:
PHP:
скопировать код в буфер обмена
  1.  
  2. $news_id = (int)$_GET['id'];
  3. $sql = "SELECT * FROM news, users WHERE news.id = users.id AND news.id='.$news_id.'";
  4.  

как то так, код не проверял
andrewkard Отправлено: 12 Августа, 2015 - 10:51:53 • Тема: Пространичная навигация • Форум: JavaScript & VBScript

Ответов: 14
Просмотров: 1269
sarmat
вот так можно передать 2 параметра:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $("#content").load("data.php?x=" + this.x"&y="+ this.y);
  3.  
andrewkard Отправлено: 12 Августа, 2015 - 10:39:38 • Тема: Как сделать вывод текста по отдельности из ячейки mysql • Форум: Программирование на PHP

Ответов: 12
Просмотров: 1293
spark108
Вам в цикле нужно записать их в массив,

и потом в другом цикле вывести:
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach ($arr as $row){
  3. echo $row;
  4. }
  5.  
andrewkard Отправлено: 12 Августа, 2015 - 10:30:56 • Тема: Непонятка с list'ом • Форум: Вопросы новичков

Ответов: 10
Просмотров: 280
arimanecro пишет:
А почему он туда попадает?

что то не то записалось в переменную $status Улыбка
(Добавление)
arimanecro пишет:
хм...и все таки не работает ))

работает:
55b72b9a0d300|Lynda|lynda@aol.com|str.groove 788|859860958|read
55b72be3c7f3e|Zorro|zorro@mail.ru|str.silver street|+40006060606|unread

PHP:
скопировать код в буфер обмена
  1.  
  2. if(!is_file('ORDERS.txt')) {
  3.     echo 'no orders';}
  4. $orders = file('ORDERS.txt');
  5. $status = 'unread';
  6.  
  7. foreach($orders as $order) {
  8.     if(strpos($order,$status)=== false){
  9.         continue;
  10.     } else {
  11.         list($oid, $name, $email, $address, $phone, $status1) = explode('|', $order);
  12.         echo $name; // Выводит Zorro
  13.     }
  14. }
  15.  
andrewkard Отправлено: 12 Августа, 2015 - 10:21:34 • Тема: Непонятка с list'ом • Форум: Вопросы новичков

Ответов: 10
Просмотров: 280
и еще, я думаю не нужно заменять переменную $status в $list
(Добавление)
вот так работает:
PHP:
скопировать код в буфер обмена
  1.  
  2. if(!is_file('ORDERS.txt')) {
  3.     echo 'no orders';}
  4. $orders = file('ORDERS.txt');
  5. $status = 'unread';
  6.  
  7. foreach($orders as $order) {
  8.     if(strpos($order,$status)=== false){
  9.         next($orders);
  10.     } else {
  11.         list($oid, $name, $email, $address, $phone, $status1) = explode('|', $order);
  12.         echo $name; // Выводит Lynda и Zorro
  13.     }
  14. }
  15.  
andrewkard Отправлено: 12 Августа, 2015 - 10:11:48 • Тема: Непонятка с list'ом • Форум: Вопросы новичков

Ответов: 10
Просмотров: 280
arimanecro
У Вас второй цикл попадает в

Страниц (92): В начало « ... 78 79 80 81 [82] 83 84 85 86 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB