Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с экранированием спец символов 
:(
    Опции темы
Testernew
Дата 11.3.2014, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 12.2.2012
Где: Луганск

Репутация: нет
Всего: нет



Проблема с экранированием спец символов, не могу заставить данный код работать в php  (shel_exec, system..)

Содержимое some.txt
Код

mac: 1C:9F:DB:3E:25:9B name : Some lastip : 192.168.15.78 txpower : 56 quality : 96 capacity : 95
mac: 14:A4:3C:74:C0:99 name : Some lastip : 192.168.15.178 txpower : 56 quality : 96 capacity : 2
mac: 1C:9F:DB:3E:25:98 name : Some lastip : 192.168.15.48 txpower : 56 quality : 74 capacity : 85
mac: 1C:9F:DB:62:10:9F name : Some lastip : 192.168.15.58 txpower : 56 quality : 97 capacity : 95
mac: 1C:9F:DB:3C:74:9C name : Some lastip : 192.168.15.198 txpower : 56 quality : 42 capacity : 8
mac: 14:A4:3C:48:07:98 name : Some lastip : 192.168.15.28 txpower : 56 quality : 87 capacity : 85
mac: 1C:9F:DB:96:90:98 name : Some lastip : 192.168.15.158 txpower : 56 quality : 86 capacity : 85
mac: 1C:9F:DB:96:9A:9E name : Some lastip : 192.168.15.68 txpower : 56 quality : 90 capacity : 10
mac: 1C:9F:DB:32:1C:96 name : Some lastip : 192.168.15.99 txpower : 56 quality : 94 capacity : 93
mac: 14:A4:3C:4E:B9:96 name : Some lastip : 192.168.15.148 txpower : 56 quality : 60 capacity : 69
mac: 1C:9F:DB:94:76:9A name : Some lastip : 192.168.15.168 txpower : 56 quality : 49 capacity : 50
mac: 1C:9F:DB:3C:EC:98 name : Some lastip : 192.168.15.128 txpower : 56 quality : 97 capacity : 95
mac: 1C:9F:DB:3C:ED:99 name : Some lastip : 192.168.15.98 txpower : 56 quality : 90 capacity : 96


Код

<?php
echo shel_exec("awk '$NF<=10{print \"<div style=\"width: 50%; background-color: red; color: white;\">\"$0\"</div>\";next}1'");
?>


В Bash работает вот такая конструкция:
Код

cat some.txt | awk '$NF<=10{print "<div style=\"width: 50%; background-color: red; color: white;\">"$0"</div>";next}1'


PM   Вверх
Testernew
Дата 11.3.2014, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 12.2.2012
Где: Луганск

Репутация: нет
Всего: нет



Up
PM   Вверх
baldina
Дата 11.3.2014, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



Код

<?php
echo shel_exec("awk '$NF<=10{print \"<div style=\\\"width: 50%; background-color: red; color: white;\\\">\"$0\"</div>\";next}1'");
?>


Это сообщение отредактировал(а) baldina - 11.3.2014, 15:30
PM MAIL   Вверх
Testernew
Дата 11.3.2014, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 12.2.2012
Где: Луганск

Репутация: нет
Всего: нет



Цитата(baldina @ 11.3.2014,  15:30)
Код

<?php
echo shel_exec("awk '$NF<=10{print \"<div style=\\\"width: 50%; background-color: red; color: white;\\\">\"$0\"</div>\";next}1'");
?>

Спасибо, но у меня не работает:

пробую так:
Код

<?php
echo shell_exec("cat some.txt | awk '$NF<=10{print \"<div style=\\\"width: 50%; background-color: red; color: white;\\\">\"$0\"</div>\";next}1'");
?>

в bash у меня работает вот такой вариант:
Код

cat test | awk '$NF<=10{print "<div style=\"width: 50%; background-color: red; color: white;\">"$0"</div>";next}1'


Это сообщение отредактировал(а) Testernew - 11.3.2014, 21:04
PM   Вверх
_zorn_
Дата 12.3.2014, 03:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1076
Регистрация: 21.8.2007

Репутация: 6
Всего: 12



Как минимум нужно экранировать доллар. В двойных кавычках он воспринимается как переменная пхп (собственно и в баше тоже, но у вас там одинарные для баша идут).

Чтобы поменьше заборов из слешей, используйте одинарные.
Код
echo shel_exec('cat some.txt | awk \'$NF<=10{print "<div style=\"width: 50%; background-color: red; color: white;\">"$0"</div>";next}1\'');

Ну или стандартную escapeshellcmd испробуйте http://ru2.php.net/manual/ru/function.escapeshellcmd.php

Это сообщение отредактировал(а) _zorn_ - 12.3.2014, 03:58
PM MAIL   Вверх
krypt3r
Дата 12.3.2014, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 3
Всего: 16



Что-то не пойму, зачем нужно дергать внешние утилиты? Средствами PHP сделать никак?
PM MAIL   Вверх
Testernew
Дата 12.3.2014, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 12.2.2012
Где: Луганск

Репутация: нет
Всего: нет



Цитата(_zorn_ @ 12.3.2014,  03:50)
Как минимум нужно экранировать доллар. В двойных кавычках он воспринимается как переменная пхп (собственно и в баше тоже, но у вас там одинарные для баша идут).

Чтобы поменьше заборов из слешей, используйте одинарные.
Код
echo shel_exec('cat some.txt | awk \'$NF<=10{print "<div style=\"width: 50%; background-color: red; color: white;\">"$0"</div>";next}1\'');

Ну или стандартную escapeshellcmd испробуйте http://ru2.php.net/manual/ru/function.escapeshellcmd.php

Спасибо!! попробую через несколько часов данный пример!
PM   Вверх
Testernew
Дата 12.3.2014, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 12.2.2012
Где: Луганск

Репутация: нет
Всего: нет



Цитата(_zorn_ @ 12.3.2014,  03:50)
Как минимум нужно экранировать доллар. В двойных кавычках он воспринимается как переменная пхп (собственно и в баше тоже, но у вас там одинарные для баша идут).

Чтобы поменьше заборов из слешей, используйте одинарные.
Код
echo shel_exec('cat some.txt | awk \'$NF<=10{print "<div style=\"width: 50%; background-color: red; color: white;\">"$0"</div>";next}1\'');

Ну или стандартную escapeshellcmd испробуйте http://ru2.php.net/manual/ru/function.escapeshellcmd.php


Не работает, результат пустой экран, функции которые эскейптят пробовал результат тот же. У вас этот пример работал? может мне нужно отредактировать php.ini?
PM   Вверх
baldina
Дата 12.3.2014, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



PM MAIL   Вверх
Testernew
Дата 13.3.2014, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 12.2.2012
Где: Луганск

Репутация: нет
Всего: нет



Цитата(baldina @ 12.3.2014,  23:06)
Testernew, 
http://ideone.com/O9hlQl
http://ideone.com/yyb0mc

Большое спасибо! все заработало! только у меня почему то возникает одно НО в работе скрипта, после каждого блока заключенного в div у вставляется пустая строка(в html коде пустые строки отсутствуют), пробовал удалить ее вот таким вот способом:

Код

preg_replace("/\s*\r+/", "", $mystring);


Или добавлением в скрипт:
grep -v \"^\$\"
или
sed '/^\$/d'


Это сообщение отредактировал(а) Testernew - 13.3.2014, 23:28
PM   Вверх
baldina
Дата 14.3.2014, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



Testernew, не проще все на php сделать?
Код

$i=0;
foreach (new SplFileObject('some.txt') as $line) {
    if ($i++ < 10)
      echo '<div style="width: 50%; background-color: red; color: white;">', $line, '</div>';
    else
      echo $line;
}

PM MAIL   Вверх
Testernew
Дата 15.3.2014, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 12.2.2012
Где: Луганск

Репутация: нет
Всего: нет



Цитата(baldina @ 14.3.2014,  09:10)
Testernew, не проще все на php сделать?
Код

$i=0;
foreach (new SplFileObject('some.txt') as $line) {
    if ($i++ < 10)
      echo '<div style="width: 50%; background-color: red; color: white;">', $line, '</div>';
    else
      echo $line;
}

Изначально просто решил что парсинг будет на удаленной стороне а php просто отправит и отобразит результат, по сути конечно без разницы. У меня данный пример работает не корректно при следующих входных данных:

some.txt
Код

mac: DC:9F:DB:3E:25:77 name : Some lastip : 192.168.15.78 txpower : 56 quality : 96 capacity : 95
mac: 24:A4:3C:74:C0:51 name : Some lastip : 192.168.15.178 txpower : 56 quality : 96 capacity : 93
mac: DC:9F:DB:3E:25:22 name : Some lastip : 192.168.15.48 txpower : 56 quality : 74 capacity : 85
mac: DC:9F:DB:62:10:11 name : Some lastip : 192.168.15.58 txpower : 56 quality : 97 capacity : 95
mac: DC:9F:DB:3C:74:41 name : Some lastip : 192.168.15.198 txpower : 56 quality : 42 capacity : 8
mac: 24:A4:3C:48:07:A4 name : Some lastip : 192.168.15.28 txpower : 56 quality : 87 capacity : 85
mac: DC:9F:DB:96:90:20 name : Some lastip : 192.168.15.158 txpower : 56 quality : 86 capacity : 85
mac: DC:9F:DB:96:9A:11 name : Some lastip : 192.168.15.68 txpower : 56 quality : 90 capacity : 10
mac: DC:9F:DB:32:1C:42 name : Some lastip : 192.168.15.99 txpower : 56 quality : 94 capacity : 93
mac: 24:A4:3C:4E:B9:32 name : Some lastip : 192.168.15.148 txpower : 56 quality : 60 capacity : 69
mac: DC:9F:DB:94:76:D3 name : Some lastip : 192.168.15.168 txpower : 56 quality : 49 capacity : 50
mac: DC:9F:DB:3C:EC:F1 name : Some lastip : 192.168.15.128 txpower : 56 quality : 97 capacity : 95
mac: DC:9F:DB:3C:ED:04 name : Some lastip : 192.168.15.98 txpower : 56 quality : 90 capacity : 96


Он мне выдает:


Код

<div style="width: 77%; background-color: red; color: white;">mac: DC:9F:DB:3E:25:77 name : Some lastip : 192.168.15.78 txpower : 56 quality : 96 capacity : 95</div>
<div style="width: 77%; background-color: red; color: white;">mac: 24:A4:3C:74:C0:51 name : Some lastip : 192.168.15.178 txpower : 56 quality : 96 capacity : 93</div>
<div style="width: 77%; background-color: red; color: white;">mac: DC:9F:DB:3E:25:22 name : Some lastip : 192.168.15.48 txpower : 56 quality : 74 capacity : 85</div>
<div style="width: 77%; background-color: red; color: white;">mac: DC:9F:DB:62:10:11 name : Some lastip : 192.168.15.58 txpower : 56 quality : 97 capacity : 95</div>
<div style="width: 77%; background-color: red; color: white;">mac: DC:9F:DB:3C:74:41 name : Some lastip : 192.168.15.198 txpower : 56 quality : 42 capacity : 8</div>
<div style="width: 77%; background-color: red; color: white;">mac: 24:A4:3C:48:07:A4 name : Some lastip : 192.168.15.28 txpower : 56 quality : 87 capacity : 85</div>
<div style="width: 77%; background-color: red; color: white;">mac: DC:9F:DB:96:90:20 name : Some lastip : 192.168.15.158 txpower : 56 quality : 86 capacity : 85</div>
<div style="width: 77%; background-color: red; color: white;">mac: DC:9F:DB:96:9A:11 name : Some lastip : 192.168.15.68 txpower : 56 quality : 90 capacity : 10</div>
<div style="width: 77%; background-color: red; color: white;">mac: DC:9F:DB:32:1C:42 name : Some lastip : 192.168.15.99 txpower : 56 quality : 94 capacity : 93</div>
<div style="width: 77%; background-color: red; color: white;">mac: 24:A4:3C:4E:B9:32 name : Some lastip : 192.168.15.148 txpower : 56 quality : 60 capacity : 69</div>
mac: DC:9F:DB:94:76:D3 name : Some lastip : 192.168.15.168 txpower : 56 quality : 49 capacity : 50
mac: DC:9F:DB:3C:EC:F1 name : Some lastip : 192.168.15.128 txpower : 56 quality : 97 capacity : 95
mac: DC:9F:DB:3C:ED:04 name : Some lastip : 192.168.15.98 txpower : 56 quality : 90 capacity : 96



Пробую:
Код

foreach (new SplFileObject('some.txt') as $line) {
    if ($i++ < 10)
      echo '<div style="width: 77%; background-color: red; color: white;">', $line, '</div>';
    else
      echo $line;
}

?>


Это сообщение отредактировал(а) Testernew - 15.3.2014, 17:21
PM   Вверх
baldina
Дата 15.3.2014, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



работает он ровно так же, как приведенный вами же код awk
а уж как должен знаете только вы...

Добавлено через 12 минут и 7 секунд
вру, не так...
так:
Код

foreach (new SplFileObject('some.txt') as $line) {
    $vars = explode (' ', $line);
    $n = count ($vars)-1;
    if ($vars[$n] <= 10)
      echo '<div style="width: 77%; background-color: red; color: white;">', $line, '</div>';
    else
      echo $line;
}

PM MAIL   Вверх
Testernew
Дата 16.3.2014, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 12.2.2012
Где: Луганск

Репутация: нет
Всего: нет



Спасибо! большое помогло!!
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.