2

PHP で HTML ドキュメントを取り込もうとしており (それを制御することはできません)、各入力に ID があることを確認しています。ID がない場合は、設定されている名前を使用して ID を追加する必要があります。

例えば:

input type="text" name="something" value="something else"

これを次のように解析する必要があります。

input type="text" name="something" id="something" value="something else"

ドキュメント全体に対してこれを行う必要があります。

私は解決策を探していますが、手ぶらで出てきました。

4

3 に答える 3

1

わかりましたので、完全に誤解しました!ここで2番に答えてください:

$dom = new DOMDocument; 
$dom->load('yourdoc.html');// Load document
$inputs = $dom->getElementsByTagName("input"); //Get inputs
for($i=0; $i<$inputs->length; $i++){ // For every input found
    $thisName = $inputs->item($i)->getAttribute("name"); // Put the name in a variable
    $inputs->item($i)->setAttribute("id",$thisName); // Then set ID as the same
}
$dom->save('yourdoc.html'); //Save the document

これはあなたが望むものに近いはずですよね?

パーサーはなく、いくつかの単純な DOM 作業のみです。

于 2013-02-12T10:19:09.123 に答える
0

preg_replace_callbackこれはおそらく(http://www.php.net/manual/en/function.preg-replace-callback.php)によって行うことができます

擬似コード:

preg_replace_callbackすべてを抽出し<input ... >て送信するために使用 しますsomeFunction

someFunction(str):

If str contains 'id=':
    return str //no need to add id
else:
    extract value of name, insert 'id="name" ' after '<input ' and return str
于 2013-02-12T10:12:26.847 に答える
0

フォーム送信前にこれを行う必要がある場合は、Javascript を使用する必要があります。

jQueryを使って...

$('input').each(function(){
    var name = $(this).attr('name');
    $(this).attr('id','name');
});
于 2013-02-12T09:29:14.243 に答える