如何在特定区域添加文字?

时间:2010-03-05 07:49:43

标签: php

如果我有这样的一行,

<option value="someval">somval</option>

如何在最后一次引用值之后定位光标并放置abcdef之类的内容?

所以输出将是

<option value="somval" abcdef>somval</option>

PHP

我想动态地这样做,我无法弄清楚如何做到这一点。我在看strpos(),但我看不出它是如何完成的。我将在文本框中发布一堆选项标签,然后生成代码。所以我会有很多选项字段。

@martin - 假设我有一个巨大的下拉列表,每个选项都列出了一个存在的国家/地区。而不是必须手动输入这样的东西:

$query = $db->query("my query....");
while($row = $db->fetch($query)) {

<select name="thename">
    <option value="someval" <?php if($row['someval'] == 'someval') { print "selected"; } ?> >someval</option>
    <option value="someval" <?php if($row['someval'] == 'someval') { print "selected"; } ?> >someval</option>
    <option value="someval" <?php if($row['someval'] == 'someval') { print "selected"; } ?> >someval</option>
    ... Followed by 100 more, because there are a lot of locations to list.
</select>

如何将所有选项发布到文本框中并自动生成上述代码以节省大量时间?

3 个答案:

答案 0 :(得分:2)

使用您的示例:

while($row = $db->fetch($query)) {
    printf('<option value="someval"%s>someval</option>',
            ($row['someval'] == 'someval') ? ' selected="selected" ' : '');
}

这将遍历行并输出一个选项,如果%s 等于,则将selected="selected"替换为$row['someval']属性someval 。但是,上述内容相当无意义,因为所有选项元素都具有相同的值和文本,因此请尝试

while($row = $db->fetch($query)) {
    printf('<option value="%s"%s>%s</option>',
            $row['country-code'],
            ($row['country-code'] === $selection) ? ' selected="selected" ' : '',
            row['country-name']);
}

$selection是您要比较的任何内容。用数据库中的相应键替换$ row中的键。

注意:关于保护输出的通常免责声明适用

答案 1 :(得分:0)

您可以抓取(value=".+?")并将其替换为$0 abcdef

<?php

  $string = '<option value="someval">someval</option>';
  print preg_replace("/(value=\".+?\")/i", "$0 abcdef", $string);

?>

其中输出以下内容:

<option value="someval" abcdef>someval</option>

答案 2 :(得分:0)

使用PHP,您可以生成包含所需文本的整个字符串。你在哪里有原始字符串?在变量或文本文件中?