У меня немного запутанный вопрос, пожалуйста, со мной.
У меня есть что-то вроде этого.
<form id="formPropiedades" name="formPropiedades" method="post" action="./index.php"> <table width="70%" cellpadding="2" border="1" style="margin: 0 auto;margin-bottom:70px" class="parametros"> <caption> <h1>Parámetros generales de la plantilla</h1> </caption> <tbody> <tr> <th colspan="2">Campo</th> <th colspan="6">Filtro</th> </tr> <tr class="row"> <td class="dbList" colspan="2">Address</td> <td colspan="6"> <input type="text" style="width: 100%;border: solid 1px black;" name="inp[]" value=""> <select id="tablaCampo1" class="tablaCampo1" name="tablaCampo1"> <option value="SALTEST.ANUNCIO.ID_CIUDAD">SALTEST.ANUNCIO.ID_CIUDAD</option> <option value="SALTEST.ANUNCIO.CIUDAD">SALTEST.ANUNCIO.CIUDAD</option> <option value="SALTEST.ANUNCIO.MUNICIPIO">SALTEST.ANUNCIO.MUNICIPIO</option> <option value="SALTEST.ANUNCIO.ID_ESTADO">SALTEST.ANUNCIO.ID_ESTADO</option> <option value="SALTEST.ANUNCIO.ESTADO">SALTEST.ANUNCIO.ESTADO</option> <option value="SALTEST.ANUNCIO.ID_MUNICIPIO">SALTEST.ANUNCIO.ID_MUNICIPIO</option> </select> <button class="makeStrng" type="button">+</button> </td> </tr> <tr> <td align="right" colspan="8"> <input type="button" id="guardarBtn" value="guardar" name="guardar" style=" float:left"> <input type="button" id="step1" value="prev" name="prev"> <input type="submit" id="propiedades" value="Enviar" name="submitme"> </td> </tr> </tbody> </table> </form>
Таким образом, опция в select – это фактически столбцы из XML. У этого есть данные для соответствующего поля
Чтобы дать вам идею, xml выглядит примерно так:
<SALTEST> <ANUNCIO> <CIUDAD>Some Name</CIUDAD> <MUNICIPIO>SOme Name </MUNICIPIO> <ESTADO>Some name </ESTADO> </ANUNCIO> <ANUNCIO> <CIUDAD>Some Name</CIUDAD> <MUNICIPIO>SOme Name </MUNICIPIO> <ESTADO>Some name </ESTADO> </ANUNCIO> <SALTEST>
Пользователь будет использовать параметр выбора и создать строку, которая будет иметь параметр для создания содержимого
Например
для создания адресной строки пользователь сохранит настройку, например, такую вещь.
Строка1:
<fld>SALTEST.ANUNCIO.ESTADO </fld><fld>SALTEST.ANUNCIO.MUNICIPIO </fld><fld>SALTEST.ANUNCIO.CIUDAD</fld>
STRING2
<fld>SALTEST.ANUNCIO.ESTADO</fld><ltr>,</ltr> <fld>SALTEST.ANUNCIO.MUNICIPIO</fld><ltr>,</ltr><fld>SALTEST.ANUNCIO.CIUDAD</fld>
STRING3:
<fn>if(<fld>SALTEST.ANUNCIO.ID_CIUDAD</fld>,<fld>SALTEST.ANUNCIO.ID_CIUDAD</fld>,"<",<fld>SALTEST.ANUNCIO.ID_CIUDAD</fld>)</fn>
Таким образом, в основном строка будет иметь три типа разделителей.
1. <fld></fld>
Эти поля должны использоваться из XML.
2. <fn></fn>
Все, что между ними является функцией, и я говорю системе, чтобы определить ее как функцию
3. <ltr></ltr>
Все, что между ними – это символы, которые должны использоваться для разделения каждого
например :
<fld>SALTEST.ANUNCIO.ESTADO</fld><ltr>,</ltr> <fld>SALTEST.ANUNCIO.MUNICIPIO</fld><ltr>,</ltr><fld>SALTEST.ANUNCIO.CIUDAD</fld>
Должен указать SOme Name, Some Name, Some name.
Я должен написать PHP-скрипт для обнаружения каждого типа строки, а затем применить связанные функции
Пожалуйста, дайте мне некоторое предложение
заранее спасибо
Вы хотите создать регулярное выражение, которое идентифицирует окружающие теги и вытаскивает содержимое между ними. Затем вызовите функцию, которая решает, какую именно комбинацию тегов следует заменить. preg_replace_callback
кажется функцией du jour для вас.
$newstr = ''; while ($newstr != $subject) { if ($newstr) $subject = $newstr; echo "subject=".str_replace('<', '<', $subject)."<br />\n"; $newstr = preg_replace_callback('/<(fld|fn|ltr)>([^>]*?)<\/\\1>/', function ($matches) { // $matches[1] contains 'fld' or 'fn' or 'ltr' // $matches[2] contains the string between the tags echo "matches=<pre>".print_r($matches,true)."</pre><br />\n"; switch ($matches[1]) { case 'fld': // here you look up the string in $matches[2] from your XML and return it return "fld:$matches[2]"; break; case 'fn': // here you call whatever function with arg of $matches[2] and return result return "fn:$matches[2]"; break; case 'ltr': return "ltr:$matches[2]"; return $matches[2]; break; } }, $subject); echo "anewstr=".str_replace('<', '<', $newstr)."<br />\n"; if ($newstr == $subject) { echo "Breaking...<br />\n"; break; } }
Технически, поскольку вы возвращаете значение в каждом случае, вам не нужен break;
но я думаю, что это хорошая форма, чтобы оставить его там.