Подскажите пожалуйста, есть ли такой php код.

<select>
<?php
    $i = "(one)(two)(three)(four)(five)";
    $i2 = "(one)(two)(three)(four)(five)";
    $i = str_replace("(", "<option>", $i);
    $i = str_replace(")", "</option>", $i);
    $i2 = str_replace("(", "", $i2);
    $i2 = str_replace(")", "", $i2);
    $i = str_replace("<option>", "<option value='".$i2."'>", $i);
    echo $i;
?>
</select>

Код выводится следующим образом:

<select>
    <option value="onetwothreefourfive">one</option>
    <option value="onetwothreefourfive">two</option>
    <option value="onetwothreefourfive">three</option>
    <option value="onetwothreefourfive">four</option>
    <option value="onetwothreefourfive">five</option>
</select> 

Как сделать так, чтобы значение выглядело так (значение верное):

<select>
    <option value="one">one</option>
    <option value="two">two</option>
    <option value="three">three</option>
    <option value="four">four</option>
    <option value="five">five</option>
</select> 
-2
Game Eagle

2 ответа

Тебе лучше начать с массива. Вы можете добраться туда с помощью trim и explode . С помощью foreach это легко сделать из массива.

<?php
$word_numbers = explode(')(', trim('(one)(two)(three)(four)(five)', '()'));
?>
<select>
<?php    
foreach($word_numbers as $number) {
    echo '<option value="' . $number . '">' . $number . '</option>' . PHP_EOL; 
}
?>
</select>

... как массив ...

$word_numbers = array('one', 'two', 'three', 'four', 'five');
foreach($word_numbers as $number) {
    echo '<option value="' . $number . '">' . $number . '</option>' . PHP_EOL; 
}

В JS достаточно просто - лучше просто передать вещь клиенту:

$i = "(a)(2)(3)(4)(5)";
$i = $i.replace(/\(/g, "<option>");
$i = $i.replace(/\)/g, "</option>");
$i = $i.replace(/<option>(\w)<\/option>/g, function(x,y) {  return `<option value='${y}'>${y}</option>` })
console.log($i)

или быстрее:

document.getElementById("sel").innerHTML += ["a","2","3","4","5"].map(x => `<option value='${x}'>${x}</option>`).join("")
<select id="sel"><option value="">Please select</option></select>
58557967