首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP查找字符串中的多个大括号并替换其中的文本

PHP查找字符串中的多个大括号并替换其中的文本
EN

Stack Overflow用户
提问于 2013-02-15 07:20:50
回答 2查看 2.8K关注 0票数 0

我的数据库中有这样的字符串

代码语言:javascript
复制
Label is {input:inputvalue} and date is {date:2013-2-2}

如何从第一个括号中提取input和inputvalue,从第二个括号中提取date和2013-2-3,依此类推?因此,它显示如下

代码语言:javascript
复制
Label is <input name="input" value="input_value"> and date is <input name="date" value="2013-2-2"> 

仅当字符串包含{input}或{date}时,Below函数才有效

代码语言:javascript
复制
function Replace_brackets($rec){
    $arr = array(" <input name="input" value='input'> ",
                 " <input name="date" value='date'> ");
    $arr1 = array('{input}','{date}');
    $itemvalue=str_replace($arr1,$arr,$rec);
    return $itemvalue;
}

文本上可能有或多或少的大括号,例如2个输入大括号和4个日期大括号。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-15 07:31:18

带有反向引用的preg_replace()在本例中是http://php.net/manual/en/function.preg-replace.php

代码语言:javascript
复制
<?php
$s = "Label is {input:inputvalue} and date is {date:2013-2-2}";
print preg_replace( "/{([^:}]*):?([^}]*)}/", "<input name='\\1' value='\\2'>", $s );
?>

或者,如果您需要解析名称和值对,就像@Jack指出的那样,您可以使用preg_replace_callback()版本(尽管您实际上不需要在属性值上使用htmlspecialchars()。将htmlspecialchars()替换为适用的任何解析函数):

代码语言:javascript
复制
print preg_replace_callback( "/{([^:}]*):?([^}]*)}/", "generate_html", $s );

function generate_html( Array $match )
{
return "<input name='".htmlspecialchars($match[1])."'    value='".htmlspecialchars($match[2])."'>";
}
票数 6
EN

Stack Overflow用户

发布于 2013-02-15 07:29:18

您可以使用正则表达式和preg_replace_callback函数

代码语言:javascript
复制
preg_replace_callback('~(\\{[^}]+\\})~', $callback, $subject);

其中subject是您的文本,回调是处理给定输入字符串并返回替换字符串的函数

对于简单的表达式,您可以使用下一个示例,但可以将其转换为单个preg_replace(没有回调)

代码语言:javascript
复制
$callback = function($string) {
    preg_match('~\\{([^:]):(.*)\\}~', $string, $m);
    return "<input name=\"{$m[1]}\" value=\"{$m[2]}\">";
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14885871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档