Что такое PHP-эквивалент этого Perl-скрипта? - PullRequest
0 голосов
/ 26 мая 2011

Некоторое объяснение здесь .Это для преобразования произвольного кода JavaScript в код, подходящий для букмарклетов.

#!/usr/bin/env perl
#
# http://daringfireball.net/2007/03/javascript_bookmarklet_builder
# Licence: http://www.opensource.org/licenses/mit-license.php

use strict;
use warnings;
use URI::Escape qw(uri_escape_utf8);
use open  IO  => ":utf8",       # UTF8 by default
          ":std";               # Apply to STDIN/STDOUT/STDERR

my $src = do { local $/; <> };

# Zap the first line if there's already a bookmarklet comment:
$src =~ s{^// ?javascript:.+\n}{};
my $bookmarklet = $src;

for ($bookmarklet) {
    s{^\s*//.+\n}{}gm;  # Kill comments.
    s{\t}{ }gm;         # Tabs to spaces
    s{[ ]{2,}}{ }gm;    # Space runs to one space
    s{^\s+}{}gm;        # Kill line-leading whitespace
    s{\s+$}{}gm;        # Kill line-ending whitespace
    s{\n}{}gm;          # Kill newlines
}

# Escape single- and double-quotes, spaces, control chars, unicode:
$bookmarklet = "javascript:" .
    uri_escape_utf8($bookmarklet, qq('" \x00-\x1f\x7f-\xff));

print "// $bookmarklet\n" . $src;

# Put bookmarklet on clipboard:
`/bin/echo -n '$bookmarklet' | /usr/bin/pbcopy`;

1 Ответ

4 голосов
/ 26 мая 2011

Я не перевожу его на PHP для вас, но приведу псевдокод.

  • прочитать файл в строку $ src
  • удалить первую строку, если регулярное выражение соответствует шаблону комментария букмарклета
  • скопировать строку в другой $ var
  • заменить любые проблемные шаблоны. PHP preg_replace() будет уместно
  • убедитесь, что $ var кодируется и правильно указан в кавычках, обращая особое внимание на шестнадцатеричные символы
  • предварять $ var с помощью 'javascript:'
  • echo "// $ var \ n $ src"
  • системный вызов, который передает $ var в программу pbcopy
...