preg_replace Düzenli ifadeler ile yardıma ihtiyacı

1 Cevap php

Bu kelime1 ve kelime2 parantez içinde

tüm satırı kaldırmak istediğiniz word2 bağlıdır

[word1] something-line-text [word2] some text again

Başka bazı metni değiştirmek istiyorsanız word2 bağlıdır

[word1] something-line-text [word2] some text again

into

REPLCACEDTEXT something-line-text some text again

some line text (something/something)

into

(something/something) some line text

1 Cevap

Ne istediğinizi% 100 emin değilim, ama bu [kelime1] bakmak ve [kelime2] ve hem de hat üzerinde yalnızca onları kaldırır:

$line = preg_replace('/word1(.*)word2/', '$1', $line);

Bu yöntem, kısmi sözcükleri maç olabilir, ve ekstra boşluk ile sol olabilir. Biraz daha iyi olurdu:

$line = preg_replace('/\s?word1\b(.*)\s?word2\b/', '$1', $line);

Bu da kelime sınırları ve boşluk kullanarak bütün kelimeler olarak uyumlu olmasını sağlar. Ekstra alan tüketilir ki ben bir tarafta boşluk kullanmayın. O sadece her kelimenin her iki tarafına \b kullanmak umurumda değil eğer.

İkinci olgu, satırın başlangıcına ilk parantezli ifade taşır:

$line = preg_replace('/(.*)(\(.*?\))/', '$2 $1', $line);

Edit:

Sizi örnek gördükten sonra, ben seni istiyorum:

$line = preg_replace('/^\[Scene\].*/', '', $line);

$line = preg_replace('/\[\.*?\]\s+(.*)(\[.*?\])/', '$2 $1');

$line = preg_replace('/(.*)\s+(\(.*?\))/', '$2 $1');