Php 在两个单词之间替换一个字符
我有一个字符串,比如Php 在两个单词之间替换一个字符,php,string,replace,Php,String,Replace,我有一个字符串,比如诸如此类的废话[START]Hello World[END]诸如此类的废话 我想将-替换为,介于[START]和[END]之间 所以结果应该是blah blah[START]Hello,World[END]blah blah你必须使用正则表达式来完成你需要的 $string = "blah blah [START]Hello-World[END] blah blah"; $string = preg_replace('/\[START\](.*)-(.*)\[END\]/',
诸如此类的废话[START]Hello World[END]诸如此类的废话
我想将-
替换为,
介于[START]
和[END]
之间
所以结果应该是
blah blah[START]Hello,World[END]blah blah
你必须使用正则表达式来完成你需要的
$string = "blah blah [START]Hello-World[END] blah blah";
$string = preg_replace('/\[START\](.*)-(.*)\[END\]/', '[START]$1,$2[END]', $string));
下面是正则表达式的作用:
\[START\]
需要反斜杠来转义方括号。它还告诉preg_replace查找以[START]
开头的字符串
(.*)
这将捕获[START]
之后的任何内容,稍后将作为$1
引用
-
这将捕获您想要替换的字符,在我们的例子中是破折号
(.*)
这将针对破折号之后的任何内容,稍后将被引用为$2
\[END\]
查找[END]以结束正则表达式
现在,对于replace部分[START]$1,$2[END]
,这将用正则表达式替换它找到的字符串,其中$1和$2是我们从前面得到的引用
$string
的变量转储将是:
string(43) "blah blah [START]Hello,World[END] blah blah"
我建议使用:
输出:
诸如此类[开始]你好,世界。你好吗?[结束]诸如此类[开始]更多,这里发短信,[结束]留言结束
正则表达式的思想是得到三个部分:“开始”、“结束”和它之间的部分。函数将这三个文本片段传递给回调函数,回调函数执行中间部分的简单操作,并返回这三个片段
通过这种方式,您可以确保不仅第一次出现(连字符或您替换的任何字符)时会发生替换,而且每次出现时都会发生替换。您尝试过什么吗?向我们展示一些代码,然后我们将帮助您改进/修复它,以实现您的期望。我们不为您编写代码。我可以给您一个在PHP中从何处开始的提示,您需要使用带有preg_replace的正则表达式,使用lookahead(对于[END])和lookback(对于[start])断言。我只有这段代码,但这只是将[start]Hello World[END]
替换为,
。这是代码<代码>预替换(“/\[START\](.*?\[END\]/”,“,”,$str)
$string = "blah-blah [START]Hello-World. How-are-you?[END] blah-blah" .
" [START]More-text here, [END] end of-message";
$string = preg_replace_callback('/(\[START\])(.*?)(\[END\])/', function($matches) {
return $matches[1] . str_replace("-", ",", $matches[2]). $matches[3];
}, $string);
echo $string;