替换PHP字符串中的一组短标签的最佳方法是什么,例如:
$return = "Hello %name%, thank you for your interest in the %product_name%. %representative_name% will contact you shortly!";
Run Code Online (Sandbox Code Playgroud)
我将定义%name%是某个字符串,来自数组或对象,例如:
$object->name;
$object->product_name;
Run Code Online (Sandbox Code Playgroud)
等等..
我知道我可以在字符串上多次运行str_replace,但我想知道是否有更好的方法.
谢谢.
我想删除所有不在两个字母之间的空格:
$string = " bah bah bah bah ";
$string = str_replace("/w /w", "+", $string);
// what goes here? to get this:
$string = "bah+bah+bah+bah";
Run Code Online (Sandbox Code Playgroud)
我的想法是,我想摆脱所有不必要的空间(不仅在开头和结尾).这不是一个链接,但对于一个搜索框,提交时会爆炸,所以+甚至可以是=或任何基本的东西
我有一个发送网站电子邮件的功能(使用phpmailer),我想要做的基本上是用php替换email.tpl文件中的所有placheholders,其中包含我提供的内容.对我来说问题是我不想重复代码因此我创建了一个函数(下面).
没有php函数,我会在脚本中执行以下操作
// email template file
$email_template = "email.tpl";
// Get contact form template from file
$message = file_get_contents($email_template);
// Replace place holders in email template
$message = str_replace("[{USERNAME}]", $username, $message);
$message = str_replace("[{EMAIL}]", $email, $message);
Run Code Online (Sandbox Code Playgroud)
现在我知道如何做其余的但是我被困在str_replace()上面,如上所示,我有多个str_replace()函数来替换电子邮件模板中的占位符.我想要的是添加str_replace()到我的函数(下面)并让它找到[\]我给它的电子邮件模板中的所有实例,并将其替换为我将给它的占位符值,如下所示:str_replace("[\]", 'replace_with', $email_body)
问题是我不知道如何将多个占位符及其替换值传递给我的函数,并让我str_replace("[{\}]", 'replace_with', $email_body)处理我给它的所有占位符并替换相应的值.
因为我想在多个地方使用该函数并避免重复代码,在某些脚本上我可能会传递函数5占位符和值,而另一个脚本可能需要传递10个占位符和值,以便在电子邮件模板中使用该函数.
我不确定是否需要在将使用该函数的脚本上使用一个数组,并且函数中的for循环可能使我的php函数从脚本中获取xx占位符和xx值并且循环占位符并用值替换它们.
这是我上面提到的功能.我对脚本进行了评论,这可能更容易解释.
// WILL NEED TO PASS PERHAPS AN ARRAY OF MY PLACEHOLDERS AND THERE VALUES FROM x SCRIPT
// INTO THE FUNCTION ? …Run Code Online (Sandbox Code Playgroud) 概述:我正在为我的网站制作一个诱人的系统,目前进展顺利,它正在按照我的预期工作,当我希望像{PAGE_SIDEBAR}这样的东西显示文件模板时出现的唯一问题/sidebar.php或类似的东西.
我在用
//loads of other str_replace here
$body = str_replace("{PAGE_SIDEBAR}, include("template/sidebar.php"), $body);
echo $body;
Run Code Online (Sandbox Code Playgroud)
这工作,但它包括在正文开头的文件,而不是{PAGE_SIDEBAR}.标签所在的位置显示数字1.
有关更好的说明,请参见屏幕截
此外,对于兴趣点,它如何使用file_get_contents()而不是include():http:// www.jamesmoorhouse.co.uk/stack_overflow/str_replace/file_get_contents_method.png
理想情况下,我希望它能像include方法一样工作,但是会显示file_get_contents方法放置它的位置.
我正在尝试str_replace用我自己的内容替换所有iframe.我相信我可以使用正则表达式但不完全确定如何删除iframe标记中的所有内容.
由于我不确定如何实现这一点,以下是我一直在使用的.但它只是替换"iframe",所以当一个页面被加载到iframe加载的任何地方时,现在只显示如果iframe要正确解析将加载的URL.
$toremove = str_replace("iframe", "", $toremove);
Run Code Online (Sandbox Code Playgroud)
以下是使用上述代码时加载的内容而不是iframe的示例输出.你可以看到它是整个iframe,只是没有单词"iframe"打破iframe(这比显示它更好)
< src="http://cdn2.adexprt.com/exo_na/center.html" width="728" height="90" frameborder="0" scrolling="no">
Run Code Online (Sandbox Code Playgroud)
但现在我想完全删除iframe及其所有内容,这样我就可以将自己的内容放在其中,而不会显示旧的代码.但我不知道如何str_replace使用正则表达式编辑我的作品,而不仅仅是作品"iframe"
这完美地运作:
$replaceLyrics=str_replace
(
'story',
'_____',
'The story of my life I take her home I drive all night to keep her warm and time Is frozen (the story of, the story of)'
);
echo $replaceLyrics;
Run Code Online (Sandbox Code Playgroud)
输出:
The _____ of my life I take her home I drive all night to keep her warm and time Is frozen (the _____ of, the _____ of)
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否可以使用内部php功能来仅替换匹配中的第一个匹配而不是全部替换.
我期待得到这个输出:
The _____ of my life I take her home I drive all night to keep …Run Code Online (Sandbox Code Playgroud) 我有一个非常长的html字符串,其中包含希腊语和英语文本,其中大多数单词都包含html标签.我已经成功地使用下面的函数来删除文本中的希腊语重音符,以便它可以很好地大写.
但是在一些字符之后的本文中,替换停止发生,文本返回重音符号.我已经尝试了一些其他功能,我在网络上找到但没有运气.
有帮助吗?
我正在使用的功能是:
public static function stripAccents($str) {
$a = array('?','?','?','?','?','?','?','?','?','?','?','?','?','?','?');
$b = array('?','?','?','?','?','?','?','?','?','?','?','?','?','?','?');
return str_replace($a, $b, $str);
}
Run Code Online (Sandbox Code Playgroud)
并且文本的示例是:
<div class="menu-page">
<h3>DESSERTS / ?????????</h3>
<h4>GOAT CHEESE ICE CREAM (N)</h4>
<p class="price">€7,50</p>
<p>??????? ???? ??????????? ????? ?? ?????????? ????????? & ?????? ?????????</p>
<p>With tomato marmalade & lemon cream</p>
<div class="clearfix"></div>
<h4>MOCHA A LA PALAIA</h4>
<p class="price">€8,50</p>
<p>??????? ?????, ????????? & ???????? ????????</p>
<p>Coffee and vanilla ice cream & Italian meringue<p>
<div class="clearfix"></div>
<h4>THE TRAIL OF CHOCOLATE (N)</h4>
<p class="price">€9,50</p> …Run Code Online (Sandbox Code Playgroud) 假设我们在MATLAB中有这个字符串:
mm = [' 44412 (25.01%)'];
Run Code Online (Sandbox Code Playgroud)
我想只删除此字符串中的第一个空格以获得此输出:
'44412 (25.01%)'
Run Code Online (Sandbox Code Playgroud)
我正在使用strrep(mm,'\^\s\s','')但没有工作.问题是什么?
我简直无法理解为什么第二行和第三行的输出彼此不同:
alphabet_ASCII = '';
for (i=65; i<=90; i++) {
alphabet_ASCII += i;
}
alphabet_ASCII += '<br>';
document.body.innerHTML += alphabet_ASCII;
document.body.innerHTML +=
alphabet_ASCII.replace(/\d{2}/g, x=>String.fromCharCode(x));
document.body.innerHTML +=
alphabet_ASCII.replace(/\d{2}/g, String.fromCharCode);Run Code Online (Sandbox Code Playgroud)
x=>String.fromCharCode(x)和之间有什么区别String.fromCharCode?
我对PHP很新,虽然我找到了解决问题的方法,但我觉得有一种更简单的方法可以实现相同的结果:
这就是我需要做的:
我有一个像这样的字符串(在真正的字符串中有大约25个要替换的值)
"We have received ##AMOUNT## ##CURRENCY## for your OrderID n. ##ORDER_ID##"
Run Code Online (Sandbox Code Playgroud)
在这个字符串中,我必须
##AMOUNT##用变量$AMOUNT
##CURRENCY##值和变量$CURRENCY
##ORDER_ID##值替换为变量值的变量值$ORDER_ID
目前我创建了一个数组:
$flds=['AMOUNT','CURRENCY','ORDER_ID'];
Run Code Online (Sandbox Code Playgroud)
我替换使用循环和动态变量:
但我已经看到str_replace也接受数组,因此可以构建一个更优雅(和有效)的解决方案,但...我找不到它
可以给一些提示吗?
谢谢
str-replace ×10
php ×8
string ×4
regex ×3
arrays ×2
foreach ×1
function ×1
html ×1
iframe ×1
javascript ×1
matlab ×1
placeholder ×1