Проблема с экранированием спец символов

Discussion in 'PHP' started by tester_new, 11 Mar 2014.

  1. tester_new

    tester_new Elder - Старейшина

    Joined:
    12 Feb 2012
    Messages:
    300
    Likes Received:
    45
    Reputations:
    24
    Проблема с экранированием спец символов, не могу заставить данный код работать в php (shell_exec, system..)

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

    Пробую вот так:
    PHP:
    <?php
    echo shell_exec("awk '$NF<=10{print \"<div style=\"width: 50%; background-color: red; color: white;\">\"$0\"</div>\";next}1'");
    ?>
    В Bash у меня работает вот такая конструкция:

    PHP:
    cat some.txt awk '$NF<=10{print "<div style=\"width: 50%; background-color: red; color: white;\">"$0"</div>";next}1'
     
    #1 tester_new, 11 Mar 2014
    Last edited: 11 Mar 2014
  2. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    917
    Likes Received:
    492
    Reputations:
    724
    http://php.net/manual/ru/function.escapeshellarg.php
    http://www.php.net/manual/ru/function.escapeshellcmd.php
     
    _________________________
    #2 VY_CMa, 11 Mar 2014
    Last edited: 11 Mar 2014
  3. tester_new

    tester_new Elder - Старейшина

    Joined:
    12 Feb 2012
    Messages:
    300
    Likes Received:
    45
    Reputations:
    24
    не работает.

    PHP:
    <?php
    echo shell_exec(escapeshellcmd("cat test | awk '$NF<=10{print "<div style="width: 50%; background-color: red; color: white;">"$0"</div>";next}1'"));
    ?>
    PHP:
    <?php
    echo shell_exec(escapeshellarg("cat test | awk '$NF<=10{print "<div style="width: 50%; background-color: red; color: white;">"$0"</div>";next}1'"));
    ?>
    PHP:
    <?php
    echo system(escapeshellcmd("cat test | awk '$NF<=10{print "<div style="width: 50%; background-color: red; color: white;">"$0"</div>";next}1'"));
    ?>
    PHP:
    <?php
    echo system(escapeshellarg("cat test | awk '$NF<=10{print "<div style="width: 50%; background-color: red; color: white;">"$0"</div>";next}1'"));
    ?>
     
  4. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Используй escapeshellarg, чтобы экранировать аргументы shell-команд, а не всю команду целиком. Если конкретно, то тебе нужно экранировать аргумент awk.