Parametreleri geçen ve alıcı PHP içeriden Ruby / Python komut dosyalarını çalıştırmak nasıl?

0 Cevap php

Ben eşdeğer Markdown-yapılandırılmış metnin içine HTML açmak gerekir.

OBS:. Quick and clear way of doing this with PHP & Python.

PHP programlama olduğum gibi, bazı insanlar Markdownify işi gösterir, ama ne yazık ki, kod güncellenmektedir değildir ve aslında it is not working. ?! Sourceforge.net / projects / markdownify bir "NOT vardır:. Desteklenmeyen - Bu projeyi sürdürmek istiyoruz Markdownify PHP ile yazılmış dönüştürücü Markdown bir HTML bana ulaşın bu yana html2text.php halefi olarak görün Daha iyi tasarım, daha iyi performans ve daha az köşe durumlarda. "

Ben keşfetmek ne olabilir, ben sadece iki iyi seçeneğiniz var:

  • Python: Aaron Swartz html2text.py

  • Yakut: Nokogiri dayalı Singpolyma en html2markdown.rb,

Yani, PHP, ben, HTML kodunu geçmek Ruby / Python komut dosyası arama ve geri çıkışını almak gerekir.

(Bu arada, bir halk "? Php, ruby ​​komut aramak için nasıl" (burada benzer bir soru) ama benim durumumda hiçbir pratik bilgiler).

Tin Man `s ucu (feryat) ardından, bu var:

PHP kodu:

$t='<p><b>Hello</b><i>world!</i></p>';
$scaped=preg_quote($t,"/");
$program='python html2md.py';

//exec($program.' '.$scaped,$n); print_r($n); exit; //Works!!!

$input=$t;

$descriptorspec=array(
   array('pipe','r'),//stdin is a pipe that the child will read from
   array('pipe','w'),//stdout is a pipe that the child will write to
   array('file','./error-output.txt','a')//stderr is a file to write to
);

$process=proc_open($program,$descriptorspec,$pipes);

if(is_resource($process)){
    fwrite($pipes[0],$input);
    fclose($pipes[0]);
    $r=stream_get_contents($pipes[1]);
    fclose($pipes[1]);
    $return_value=proc_close($process);
    echo "command returned $return_value\n";
    print_r($pipes);
    print_r($r);
}

Python kodu:

#! /usr/bin/env python
import html2text
import sys
print html2text.html2text(sys.argv[1])
#print "Hi!" #works!!!

Yukarıdaki ile bu geting am:

command returned 1 Array ( [0] => Resource id #17 1 => Resource id #18 )

Ve "hatalar" dosyası diyor:

Traceback (most recent call last): File "html2md.py", line 5, in print html2text.html2text(sys.argv1) IndexError: list index out of range

Herhangi bir fikir??


Ruby kodu (still beeing analysed)

#!/usr/bin/env ruby
require_relative 'html2markdown'
puts HTML2Markdown.new("<h1>#{ ARGF.read }</h1>").to_s

PHP'nin en basit kullanmak için önce sadece kayıtlar için, ben uğraş "exec ()" ama ben HTML dilinin çok yaygın bazı özel karakterler ile bazı problemas var.

PHP kodu:

echo exec('./hi.rb');
echo exec('./hi.py');

Ruby kodu:

#!/usr/bin/ruby
puts "Hello World!"

Python kodu:

#!usr/bin/python
import sys
print sys.argv[1]

Her ikisi de iyi çalışıyor. Ancak dize biraz daha karmaşık olduğu zaman:

$h='<p><b>Hello</b><i>world!</i></p>';
echo exec("python hi.py $h");

Bu hiç işe yaramadı.

Html dizesi özel karakterler scaped için gerekli olmasıdır. Ben bu kullanarak var:

$t='<p><b>Hello</b><i>world!</i></p>';
$scaped=preg_quote($t,"/");

Şimdi dediğim gibi çalışır here.

I am runnig: Fedora 14 ruby 1.8.7 Python 2.7 perl 5.12.2 PHP 5.3.4 nginx 0.8.53

0 Cevap