2017-05-11 13 views
-1

私はPHPの機能がstriposstr_replaceの仕組みを理解するのに苦労しています。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());

私は取得しています結果はテキストが見つかっまたは交換されていないことです!私はなぜなのか理解していない。誰かが私のためにこれを照らすことができますか?

EDIT:

テキストのボディは画像、テキスト、および小枝コードの多くが付いている電子メールテンプレートです。特定の電子メールテンプレートのセットでは、1つのテキスト行で小枝コード全体を見つけて置き換える必要があります(そのテキストが何であるかは関係ありません)。私が抱えている問題は、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

'{%...%}'部分文字列を内部に持つ完全な文字列の小さな例は何ですか? – mickmackusa

+0

これはtwigコードです... "{%ifステートメント!==" "%}これは{%else%}に別のものが{%endif%}を示すはずです。" – grgre

+0

私は小枝のコードに慣れていません。 str/pregを使って他のユーザーがタイプの質問を置き換えるのを手伝ってみると、完全な入力が何であるか、サブストリングとしてどのようなものがターゲットになっているのか、そして何が起こっているのかを明確に説明したい。私はあなたがリンク文字列を入れたいと思うが、残りは不明である。あなたの質問がはっきりしているように、前後のテキストを完全に表示してください。小枝の表情以外のテキストがありますか? – mickmackusa

答えて

0

使用str_replace ...実際にはそう

str_replace("Pattern to search",$stringToSearch,"Replacement text"); 

FYI
$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; 

、あなたはそれが実際のリンクであるためにそのリンクをてhrefする必要があります。また、 ""でPHP encossingに対応するためにあなたの比較であなたの ""を修正しました。あなたはそれと$文字列を置換する、または非正規表現のソリューションを使用して

$string = $entity->getBodyOfText(); 
0

を割り当てる

$entity->getBodyOfText(); 

あなたの機能を使用する予定がある場合はPhpFiddle.com

でテスト

があることが必要ですあなたは置換しようとしている部分文字列を正確に知っています - 部分文字列を知っていると仮定します。注意が必要なことは、部分文字列が複数回出現する可能性があり、1回の置換だけが必要な場合は、見つかった部分文字列をすべて置換することによって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 

方が良いテーラードソリューションが必要な場合は、この方法は、あなたが失敗していると私はそれを調整しますどのように説明してください。

+0

@grgre私の2つの試みについてのフィードバックをお願いします。私がまだ間違っている場合は、あなたの質問を私に説明してください。私のパターンがあなたの可能なすべての小枝のコードの構文に適切に対応していない場合は、テストするための追加入力サンプルを提供してください。これらの方法のいずれかがあなたが探しているものであれば、どちらを使いたいのかを教えてください。 – mickmackusa

+0

私の編集を確認してください。私はあなたの理解を助けることを願っています。あなたの答えは今私のために働くことはありません。 – grgre

+0

@grge私は自分の答えを更新しました。これが助けにならないなら、私にコメントを残してください。 – mickmackusa

関連する問題