preg_replaceはstr_replace
-
21-09-2019 - |
質問
しているのか教えてください文字のようなこと:
Paragraphs of text
(SOME KNOWN TEXT)Unknown Text(SOME OTHER KNOWN TEXT)
Some additional paragraphs of text
だいがく 不明テキスト, くり(として得られるテキスト) や (その他知られるテキスト).
と思いpreg_replaceきたいと思っていたいものさんありがとうございます。正規表現で置き換えます:
(SOME KNOWN TEXT)Unknown Text(SOME OTHER KNOWN TEXT)
この..
Unknown Text
を見る preg_replace 3パラメータの regex, は、 置換テキスト, は、 対象.
があるので、パスの値が未知のテキストに置き換えるテキストのパラメータ、または、reaplce左右の個 (一部知られるテキスト) や (その他の知文) を撤去せずに未知のテキストを使うことができます。あるある str_replace() 解決策はないのか。
感謝
---更新---
(その他知られるテキスト)の作品が存在する可能性が指摘されてなどのテキストがないので除去されない限り、以下のパターン (一部知られるテキスト)未知のテキスト(その他知られるテキスト).私が考える最初のstr_replace言えないのです。
解決
の条件は何ですか?あなたがお持ちの場合:
(SOME他の既知のTEXT)不明テキスト(いくつかの既知のTEXT)
(すなわち。ブラケットテキストがスワップされている場合)、あなたはまだそれを削除しますか?知られているテキストは常に行の先頭や末尾でなければなりませんか?答えはこれらのいずれかにyesの場合は、おそらくより良い正規表現を使用してオフにしています。このような何かます:
$new_text = preg_replace('/^\(SOME KNOWN TEXT\)(.+)\(SOME OTHER KNOWN TEXT\)$/m, '$1', $text);
バックスラッシュ(\
)は正規表現で特別な意味を持っている(
と)
文字をエスケープすることです。私はあなたが内容を変更したいと思うと仮定 - あなたはその時点でそれらを削除することができます。
は、この正規表現では、 .
には、特別ですオペレータは、「任意の文字」を意味しますこれは、任意の文字と一致します。 +
の手段「1つ以上」、とあります前オペレータの修飾 - 一緒に、これらが一致「は、任意の文字の一つ以上」と解釈することができます。 (
と)
文字はサブパターンのテキストのセクションを捕捉するために使用されていますに。カッコ内.+
を網羅することで、私たちは、これは交換に使用されることをキャプチャします。 (
と)
に囲まれた最初のセクションでは、正規表現エンジンによって$1
のラベルが付いています。我々はより多くの持っていた場合、彼らは$2
、$3
などを標識することと思います。
、あなたはstr_replace
機能を使用することができます。
他のヒント
あなたは単にあなたのような削除したい文字列の配列でstr_replaceを提供することができます:
$destString = str_replace(array('TEXT A', 'TEXT B'), '', $sourceString);
あなたが任意の巧妙なパターンマッチングを必要としない場合は、これは正規表現よりも早く解決されます。
2つのテキストが本当に知られている場合は、あなたがこれを行うことができます:
$result = str_replace(array('(SOME KNOWN TEXT)', '(SOME OTHER KNOWN TEXT)'), '', '(SOME KNOWN TEXT)Unknown Text(SOME OTHER KNOWN TEXT)');
正規表現よりも優れた性能である。最初の引数が交換する鍵のセットであり、第二の引数はでそれを交換するものであり、第3は、被写体である。