3

実際の質問とは関係のない理由により、PHP を介して外部スクリプトを呼び出して使用し、完全な html ドキュメントで文字列置換を実行する必要があります。置換文字列とソース コードは、php exec() を介してこのスクリプトに渡す必要があります。この例では、単純な python スクリプトを使用して置き換えを行いました。

PHP スクリプトは次のようになります。

$source = file_get_contents("somehtmlfile.html");
$replaceString = "Some text in the HTML doc";
$replaceTo = "Some other text";
$parsedString = system("python replace.py $replaceString $replaceTo $source", $retval);
print ("Done:" .$mystring);

次に、Python スクリプトは次のことを行います。

import sys
import string
dataFrom = sys.argv[1];
dataTo = sys.argv[2];
dataSourceCode = sys.argv[3];
rep = dataSourceCode.replace(dataFrom, dataTo);
print rep;

問題は、少なくとも上記の方法では、完全な html ソースを引数としてシェルに渡すことができないことです。私が理解したことから、htmlコードがシェルに渡される間、いくつかのセクションがコマンドとして解釈されます(ここでは複数行が問題になる可能性があります)。

スクリプトから受け取った出力:

sh: 開けません !DOCTYPE: そのようなファイルはありません sh: 開けません html: そのようなファイルはありません sh: 開けません head: そのようなファイルはありません sh: 開けません title: そのようなファイルはありません

...(これは続きます)

助言がありますか?

4

1 に答える 1

0

引数として渡すhtmlテキストにスペースと引用符が含まれているため、機能していないため、複数の引数として認識されます。これを解決するには、引数を引用符で囲む必要があります。
正しいコードは$parsedString = system("python replace.py '$replaceString' '$replaceTo' '$source'", $retval);

于 2012-08-16T13:17:52.527 に答える