简单:如何替换;“所有之间”;用php? $string=“我不知道这里是什么” $string=str_replace(“???”、“”、$string); echo$string;//
那么我在寻找什么代码呢?$code>$string=“我不知道这里有什么”简单:如何替换;“所有之间”;用php? $string=“我不知道这里是什么” $string=str_replace(“???”、“”、$string); echo$string;//,php,replace,str-replace,Php,Replace,Str Replace,那么我在寻找什么代码呢?$code>$string=“我不知道这里有什么” $string = "<tag>i dont know what is here</tag>" $string = str_replace("???", "<tag></tag>", $string); echo $string; // <tag></tag> $string=“”; echo$string;// 还是仅仅 $string =
$string = "<tag>i dont know what is here</tag>"
$string = str_replace("???", "<tag></tag>", $string);
echo $string; // <tag></tag>
$string=“”;
echo$string;//
还是仅仅
$string = "<tag>i dont know what is here</tag>"
$string = "<tag></tag>";
echo $string; // <tag></tag>
$string=str\u replace($string,“,$string);
对不起,我无法抗拒。也许你可以用更多的细节来更新你的问题 $search=“/[^](.*)[^]/”;
$replace=“您的新内部文本”;
$string=“我不知道这里有什么”;
echo preg_replace($search,$replace,$string);
产出:
$search = "/[^<tag>](.*)[^<\/tag>]/";
$replace = "your new inner text";
$string = "<tag>i dont know what is here</tag>";
echo preg_replace($search,$replace,$string);
新的内部文本
$string=“我不知道这里有什么”;
$new_text='I know now';
echo preg_replace(“#()*?”、“$1.”、$new_text、$2'、$string)//我现在知道了
通用函数:
$string = "<tag>I do not know what is here</tag>";
$new_text = 'I know now';
echo preg_replace('#(<tag.*?>).*?(</tag>)#', '$1'.$new_text.'$2' , $string); //<tag>I know now</tag>
如果“标签”发生变化:
$string=“我不知道这里有什么”;
$string=preg_replace(“|^如果您不知道
标记中有什么,则可能还有另一个
标记,例如
$string = "<tag>i dont know what is here</tag>";
$string = preg_replace('|^<([a-z]*).*|', '<$1></$1>', $string)
echo $string; // <tag></tag>
如果您也需要更换该部分,则此功能非常有用:
$string = "<tag>i don't know what is here</tag>";
$replacement = "replacement";
$doc = new DOMDocument();
$doc->loadXML($str1);
$node = $doc->getElementsByTagName('tag')->item(0);
$newNode = $doc->createElement("tag", $replacement);
$node->parentNode->replaceChild($newNode, $node);
echo $str1 = $doc->saveHTML($node); //output: <tag>replacement</tag>
我不得不将一个变量替换为已提交的文本区域中的一个变量。因此,我将firstName替换为Nate(包括花括号)。一个通用的非正则表达式解决方案:
我已经修改了@felix kling的答案。现在它只会在找到针的情况下替换文本
此外,我还添加了用于更换打捆针、起始位置和更换所有火柴的参数
我使用了mb
函数使函数多字节安全。
如果需要不区分大小写的解决方案,请将mb\u strpos
调用替换为mb\u stripos
$var = "Nate";
$body = "Hey there {firstName} have you already completed your purchase?";
$newBody = replaceVariable($body,"{","}",$var);
echo $newBody;
function replaceVariable($body,$needleStart,$needleEnd,$replacement){
while(strpos($body,$needleStart){
$start = strpos($body,$needleStart);
$end = strpos($body,$needleEnd);
$body = substr_replace($body,$replacement,$start,$end-$start+1);
}
return $body;
}
我假设您希望替换标记的内容,而不仅仅是替换整个字符串。老实说,应该使用lookaround。按原样运行此代码,我得到警告:preg_replace()[function.preg replace]:第1行的未知修饰符“t”
此答案100%不正确。它只是偶然提供了所需的输出。请注意,当输入稍有变化时,此答案会失败。这是对否定字符类的错误使用,是错误的信息。@FAQ如果您觉得有更好的答案,请提供,但我会提供如果这个答案在写它的时候确实做了它需要做的事情(OP明确同意),那么它决不是说这个答案“100%不正确”。比公认的答案更好。除非您需要,否则无需使用正则表达式替换。@sgroves regex是一个合理的工具,它可以避免代码卷积或提供另一个合理的优势。我在PHP 7中尝试过这一点,但没有得到响应,它似乎也在剥离标记-我还想知道是否有一个选项可以用于所有出现的情况,即更多一组以上的标记,文本介于两者之间这是一个更好的解决方案!第二个参数“$1”中缺少替换字符串。“新文本”。$2”这很好,不带正则表达式。但仅当只替换字符串中的一个出现项时才可用。如果需要替换多个出现项,则必须执行循环,直到strpos返回FALSE(这意味着不再出现任何替换。这几乎是一个有效的答案。我做了一些调整。总的来说,如果可以使用DomDocument,那么应该使用它来保持稳定性。
$string = "<tag>i dont know what is here</tag>";
$string = preg_replace('|^<([a-z]*).*|', '<$1></$1>', $string)
echo $string; // <tag></tag>
<tag>something<tag>something else</tag></tag>
$string = "<tag>i don't know what is here</tag>";
$replacement = "replacement";
$doc = new DOMDocument();
$doc->loadXML($str1);
$node = $doc->getElementsByTagName('tag')->item(0);
$newNode = $doc->createElement("tag", $replacement);
$node->parentNode->replaceChild($newNode, $node);
echo $str1 = $doc->saveHTML($node); //output: <tag>replacement</tag>
$var = "Nate";
$body = "Hey there {firstName} have you already completed your purchase?";
$newBody = replaceVariable($body,"{","}",$var);
echo $newBody;
function replaceVariable($body,$needleStart,$needleEnd,$replacement){
while(strpos($body,$needleStart){
$start = strpos($body,$needleStart);
$end = strpos($body,$needleEnd);
$body = substr_replace($body,$replacement,$start,$end-$start+1);
}
return $body;
}
function replaceBetween($string, $needleStart, $needleEnd, $replacement,
$replaceNeedles = false, $startPos = 0, $replaceAll = false) {
$posStart = mb_strpos($string, $needleStart, $startPos);
if ($posStart === false) {
return $string;
}
$start = $posStart + ($replaceNeedles ? 0 : mb_strlen($needleStart));
$posEnd = mb_strpos($string, $needleEnd, $start);
if ($posEnd === false) {
return $string;
}
$length = $posEnd - $start + ($replaceNeedles ? mb_strlen($needleEnd) : 0);
$result = substr_replace($string, $replacement, $start, $length);
if ($replaceAll) {
$nextStartPos = $start + mb_strlen($replacement) + mb_strlen($needleEnd);
if ($nextStartPos >= mb_strlen($string)) {
return $result;
}
return replaceBetween($result, $needleStart, $needleEnd, $replacement, $replaceNeedles, $nextStartPos, true);
}
return $result;
}
$string = "{ Some} how it {is} here{";
echo replaceBetween($string, '{', '}', '(hey)', true, 0, true); // (hey) how it (hey) here{