我很难理解php函数stripos
和str_replace
是如何工作的。
我有一组文字,例如:{% if group.newt !== "" %} XYZ's {% else %} ABC's {% endif %}
我想用Go to this link www.google.com
替换该文字。
我搜索文本正文:
if(stripos($entity->getBodyOfText(), $strTFind) !== false)
{preg_match("{% if group.newt !== "" %} XYZ's {% else %} ABC's {% endif %}", $strToReplace)};
OR
$str_replace($strToFind, $strToReplace, $entity->getBodyOfText());
我得到的结果是文本没有被找到或替换!我不懂为什么。有人可以帮我看清楚吗?
编辑:
文本正文是一个包含大量图像,文本和树枝代码的电子邮件模板。在一组特定的电子邮件模板中,我需要用一行文本查找并替换整个twig代码块(这与文本的内容无关)。我遇到的问题是当我使用str_replace
或preg_replace
搜索电子邮件模板中的代码块时,这些函数找不到或替换我想要查找和替换的块。
所以我的输出是相同的(没有找到,没有任何改变)。
例如:
`here would be an image
now starts a heading,
some more text with {{ twig.variable }} and then more text.
more
text, lots more text some {% twig.fucntions %}blah{% ending %} and
then here is the block
I want to find and replace: {% replace this whole thing including the brackets and percentage signs %}keep replacing
{% else %}
replace that else (everything including the brackets and percentage signs)and
{% this too %}.
some more ending text.
image,
the end`
我希望有所帮助!
答案 0 :(得分:0)
使用str_replace ...
str_replace("Pattern to search",$stringToSearch,"Replacement text");
所以在实践中:
$string = "{% if group.newt !== '' %} XYZ's {% else %} ABC's {% endif %}";
$newString = str_replace("{% if group.newt !== '' %} XYZ's {% else %} ABC's {% endif %}",$string,"Go to this link www.google.com");
echo $newString;
Fyi,你需要href那个链接才能成为一个真正的链接。同时修正你的比较中的“”以适应PHP包含“”;
在PhpFiddle.com中测试
如果您打算使用您的功能
$entity->getBodyOfText();
用它替换$ string,或者指定
$string = $entity->getBodyOfText();
答案 1 :(得分:0)
使用非正则表达式解决方案要求您确切知道要替换的子字符串 - 我假设您知道子字符串。需要注意的是,如果子字符串有可能出现多次,并且您只需要一次替换,那么str_replace()
会因替换所有找到的子字符串而导致失败。如果子字符串在字符串中是唯一的,或者您想要替换所有重复的子字符串,那么一切都将按预期工作。
代码(Demo):
$find='{% replace this whole thing including the brackets and percentage signs %}keep replacing
{% else %}
replace that else (everything including the brackets and percentage signs)and
{% this too %}.';
$replace='LINK';
$text=str_replace($find,$replace,$text);
echo "$text";
输出:
here would be an image
now starts a heading,
some more text with {{ twig.variable }} and then more text.
more
text, lots more text some {% twig.fucntions %}blah{% ending %} and
then here is the block
I want to find and replace: LINK
some more ending text.
image,
the end
如果您需要更好的定制解决方案,请解释这种方法是如何失败的,我会调整它。