我正在编写一个简单的模板系统,用于在服务器上运行动态查询.
我最初在我的模板类中有以下代码:
$output = file_get_contents($this->file);
foreach ($this->values as $key => $value) {
$tagToReplace = "{$key}";
$output = str_replace($tagToReplace, $value, $output);
}
Run Code Online (Sandbox Code Playgroud)
我注意到字符串没有像我预期的那样被替换('{}'字符仍留在输出中).
然后我将"违规"行更改为:
$tagToReplace = '{'."$key".'}';
Run Code Online (Sandbox Code Playgroud)
然后按预期工作.为什么这种变化是必要的?解释字符串中的"{"在PHP中是否具有特殊意义?
我有一个看起来很简单的查询。我在PHP中有以下代码:
$newThumb = str_replace('style="width:170px;"','',$nolinkThumb);
Run Code Online (Sandbox Code Playgroud)
我的问题是数字“ 170”可以是任何数字,因此我希望我的str_replace能够反映这一点。我试过使用:
$newThumb = str_replace('style="width:[0-9]px;"','',$nolinkThumb);
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。任何帮助将不胜感激。
谢谢
为什么 while 循环中的 str_replace 没有按预期运行?
我的代码:
$comments=$_POST['comments'];
$result = mysql_query("SELECT * FROM cust LEFT JOIN contact AS contact ON cust.cid=contact.contact_id WHERE cid='$aDoor[$i]'");
while ($row = mysql_fetch_array($result)) {
$petname=$row['petname'];
echo "Petname ".$petname."<br/>";
$comments=str_replace("+petname","$petname",$comments);
echo $comments."<br/>";
}
Run Code Online (Sandbox Code Playgroud)
当我执行这段代码时,最奇怪的事情发生了。该行:
echo "Petname ".$petname."<br/>";
按预期工作,并回显数据库中 cid 的正确宠物名。但是这条线:
$comments=str_replace("+petname","$petname",$comments);
echo $comments."<br/>";
Run Code Online (Sandbox Code Playgroud)
将始终显示第一个拉出的宠物的名字。当我将正确的 $petname 添加到 comments 变量时怎么会出现这种情况?
PS 我执行 str_replace 的原因是,使用此功能的人可以在向客户发送电子邮件时输入 +pet,并且当电子邮件到达客户时,它将具有正确的宠物名。
我正在为WordPress制作一个插件,我需要添加多个设置才能添加多个视频.一切正常,除了我在脚本标签中复制内容时,我无法用我想要的值替换占位符.
这是我到目前为止:http://jsfiddle.net/Jb6NK/1/
(function ($) {
var i = 0;
$("#add-olympvm").click(function () {
var section = $("#blank_data").text();
section.replace(/COUNT_KEY/g, i);
$("#olympvm_cage tbody").append(section);
i++;
});
}(jQuery));
Run Code Online (Sandbox Code Playgroud)
我想要做的是替换COUNT_KEY为的值i.
我知道这是可能的,但对于我的生活,我似乎无法让这个工作.
任何帮助/指针非常感谢.
谢谢,
杰里米
我刚开始使用PHP,希望有人可以帮助我.
我试图myRegion从另一个字符串(" mainString")中提取一个字符串(" "),其中我的字符串始终以" myCountry:" 开头,;如果主字符串在myCountry之后包含更多国家,则以分号()结尾,如果主字符串不包含任何内容之后不再包含更多国家/地区.
显示主字符串的不同选项的示例:
我想要提取的内容始终是粗体部分.
我在考虑类似下面的内容,但这看起来还不对:
$myRegions = strstr($mainString, $myCountry);
$myRegions = str_replace($myCountry . ": ", "", $myRegions);
$myRegions = substr($myRegions, 0, strpos($myRegions, ";"));
Run Code Online (Sandbox Code Playgroud)
迈克,非常感谢您提供任何帮助.
遇到了一些棘手的情况,我似乎无法用手指环绕。基本上我想要实现的是能够在不同的页面上注入不同的 Javascript 文件。
一些简单的随机示例:
所以我所做的是,我创建了一个函数,addScript()如下所示:
function addScript($file) {
$script = '';
$script .= '<script src="'. REL_PATH . '/path/to/file/' . $file . '">';
$script .= '</script>';
return $script;
}
Run Code Online (Sandbox Code Playgroud)
所以如果我调用addScript('jquery.min');它,输出正确。
我现在想要做的是用</head>上述函数的输出替换结束标记。如果我执行以下操作,则它可以正常工作:
ob_start();
require_once("models/header.php");
$contents = ob_get_contents();
ob_end_clean();
echo str_replace('</head>', addScript('jquery.js') . '</head>', $contents);
Run Code Online (Sandbox Code Playgroud)
但是,我希望这更动态一些,因为我可能需要在每个页面上注入多个脚本,如下所示:
addScript('script.js');
addScript('script2.js');
addScript('script3.js');
Run Code Online (Sandbox Code Playgroud)
然后我想到创建一个getHead()内部带有 foreach 循环的函数并返回str_replace那里,但这不起作用。
任何人都可以指导我根据需要动态注入尽可能多的脚本并输出头部的最后一点吗?
这是我目前的代码:
$parcels = $api->parcels->get();
$url = (array_values($parcels)[0]['label']['label_printer']);
$goToUrl = $api->getUrl($url);
str_replace('/api/v2//api/v2/', '/api/v2/', $goToUrl);
print_r($goToUrl);
echo "<br />";
echo $url;
Run Code Online (Sandbox Code Playgroud)
我为什么要用str_replace()?因为我打算重定向到$goToUrl,这不起作用,因为当前的API给了我错误的链接.
这是我的输出:
https://api_key:api_secret@panel.sendcloud.nl/api/v2//api/v2/labels/label_printer/1369315
Run Code Online (Sandbox Code Playgroud)
如您所见,api/v2在此链接中出现两次.我想删除/ api/v2 /然后运行输出.但我str_replace();没有表现.我的输出保持不变.
这甚至可以通过这种方式实现吗?在此先感谢您的帮助.
我对Perl很新,并且有以下问题:我正在尝试.yml用不同的值替换文件中的版本号.这就是我的正则表达式:
version:\s*([^\s]+)
Run Code Online (Sandbox Code Playgroud)
它到目前为止工作,但它没有做我喜欢做的事情.
这里是我目前拥有的代码,以及用于替换.yml文件中的值的Perl语句.
文件内容(./ test.yml):
app:
version: 1.2
name: abc
Run Code Online (Sandbox Code Playgroud)
码:
$search = "version:\s*([^\s]+)";
$replace = '1.3';
perl -pie 's/$search/$replace/m' ./test.yml;
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
我有一个简单的事情烦恼,过了很长时间试图找出我认识到,str_replace函数不能用简单的报价工作的问题.这是我的代码:
<?php
$replaceNL1=str_replace("\n", "NEWLINE", $_POST['txt']);
echo $replaceNL1;
$replaceNL2=str_replace('\n', 'NEWLINE', $_POST['txt']);
echo '<hr>' . $replaceNL2;
?>
Run Code Online (Sandbox Code Playgroud)
只做$replaceNL2替换.在第一个变量上,它就像没有任何变量一样str_replace().这从未发生在我身上.
我使用的是UTF-8字符集.
我有
$string="this+++is+test";
Run Code Online (Sandbox Code Playgroud)
需要str_replace改变一个"加"的许多"加号";
例: this+is+test
str-replace ×10
php ×8
regex ×3
function ×1
javascript ×1
jquery ×1
perl ×1
replace ×1
strstr ×1
substr ×1
while-loop ×1
yaml ×1